package org.xtext.example.cr.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.example.cr.services.CRGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalCRParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'Int'", "','", "'Real'", "'Partition'", "'array'", "'('", "')'", "'='", "'.'", "'size'", "'add'", "'delete'", "'print'", "'for'", "'file'", "':'", "'{'", "'}'", "'forall'", "'calcCR'", "'calcMean'", "'highestCR'", "'findSimilar'", "'clu'", "'/'", "':/'", "'['", "']'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int T__31=31;
    public static final int RULE_STRING=6;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__16=16;
    public static final int T__34=34;
    public static final int T__15=15;
    public static final int T__35=35;
    public static final int T__18=18;
    public static final int T__36=36;
    public static final int T__17=17;
    public static final int T__37=37;
    public static final int T__12=12;
    public static final int T__38=38;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=4;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalCRParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalCRParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalCRParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g"; }



     	private CRGrammarAccess grammarAccess;
     	
        public InternalCRParser(TokenStream input, CRGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "CRLanguage";	
       	}
       	
       	@Override
       	protected CRGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleCRLanguage"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:67:1: entryRuleCRLanguage returns [EObject current=null] : iv_ruleCRLanguage= ruleCRLanguage EOF ;
    public final EObject entryRuleCRLanguage() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCRLanguage = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:68:2: (iv_ruleCRLanguage= ruleCRLanguage EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:69:2: iv_ruleCRLanguage= ruleCRLanguage EOF
            {
             newCompositeNode(grammarAccess.getCRLanguageRule()); 
            pushFollow(FOLLOW_ruleCRLanguage_in_entryRuleCRLanguage75);
            iv_ruleCRLanguage=ruleCRLanguage();

            state._fsp--;

             current =iv_ruleCRLanguage; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCRLanguage85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCRLanguage"


    // $ANTLR start "ruleCRLanguage"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:76:1: ruleCRLanguage returns [EObject current=null] : ( (lv_elements_0_0= ruleElement ) )* ;
    public final EObject ruleCRLanguage() throws RecognitionException {
        EObject current = null;

        EObject lv_elements_0_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:79:28: ( ( (lv_elements_0_0= ruleElement ) )* )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:80:1: ( (lv_elements_0_0= ruleElement ) )*
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:80:1: ( (lv_elements_0_0= ruleElement ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==RULE_ID||LA1_0==11||(LA1_0>=13 && LA1_0<=15)||(LA1_0>=23 && LA1_0<=24)||(LA1_0>=29 && LA1_0<=33)) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:81:1: (lv_elements_0_0= ruleElement )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:81:1: (lv_elements_0_0= ruleElement )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:82:3: lv_elements_0_0= ruleElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getCRLanguageAccess().getElementsElementParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleElement_in_ruleCRLanguage130);
            	    lv_elements_0_0=ruleElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getCRLanguageRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_0_0, 
            	            		"Element");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCRLanguage"


    // $ANTLR start "entryRuleElement"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:106:1: entryRuleElement returns [EObject current=null] : iv_ruleElement= ruleElement EOF ;
    public final EObject entryRuleElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElement = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:107:2: (iv_ruleElement= ruleElement EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:108:2: iv_ruleElement= ruleElement EOF
            {
             newCompositeNode(grammarAccess.getElementRule()); 
            pushFollow(FOLLOW_ruleElement_in_entryRuleElement166);
            iv_ruleElement=ruleElement();

            state._fsp--;

             current =iv_ruleElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleElement176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElement"


    // $ANTLR start "ruleElement"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:115:1: ruleElement returns [EObject current=null] : ( ( (lv_varDec_0_0= ruleVarDec ) ) | ( (lv_assignment_1_0= ruleAssignment ) ) | ( (lv_arrayMethod_2_0= ruleArrayMethod ) ) | ( (lv_function_3_0= ruleFunction ) ) ) ;
    public final EObject ruleElement() throws RecognitionException {
        EObject current = null;

        EObject lv_varDec_0_0 = null;

        EObject lv_assignment_1_0 = null;

        EObject lv_arrayMethod_2_0 = null;

        EObject lv_function_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:118:28: ( ( ( (lv_varDec_0_0= ruleVarDec ) ) | ( (lv_assignment_1_0= ruleAssignment ) ) | ( (lv_arrayMethod_2_0= ruleArrayMethod ) ) | ( (lv_function_3_0= ruleFunction ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:119:1: ( ( (lv_varDec_0_0= ruleVarDec ) ) | ( (lv_assignment_1_0= ruleAssignment ) ) | ( (lv_arrayMethod_2_0= ruleArrayMethod ) ) | ( (lv_function_3_0= ruleFunction ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:119:1: ( ( (lv_varDec_0_0= ruleVarDec ) ) | ( (lv_assignment_1_0= ruleAssignment ) ) | ( (lv_arrayMethod_2_0= ruleArrayMethod ) ) | ( (lv_function_3_0= ruleFunction ) ) )
            int alt2=4;
            alt2 = dfa2.predict(input);
            switch (alt2) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:119:2: ( (lv_varDec_0_0= ruleVarDec ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:119:2: ( (lv_varDec_0_0= ruleVarDec ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:120:1: (lv_varDec_0_0= ruleVarDec )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:120:1: (lv_varDec_0_0= ruleVarDec )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:121:3: lv_varDec_0_0= ruleVarDec
                    {
                     
                    	        newCompositeNode(grammarAccess.getElementAccess().getVarDecVarDecParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleVarDec_in_ruleElement222);
                    lv_varDec_0_0=ruleVarDec();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getElementRule());
                    	        }
                           		set(
                           			current, 
                           			"varDec",
                            		lv_varDec_0_0, 
                            		"VarDec");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:138:6: ( (lv_assignment_1_0= ruleAssignment ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:138:6: ( (lv_assignment_1_0= ruleAssignment ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:139:1: (lv_assignment_1_0= ruleAssignment )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:139:1: (lv_assignment_1_0= ruleAssignment )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:140:3: lv_assignment_1_0= ruleAssignment
                    {
                     
                    	        newCompositeNode(grammarAccess.getElementAccess().getAssignmentAssignmentParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAssignment_in_ruleElement249);
                    lv_assignment_1_0=ruleAssignment();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getElementRule());
                    	        }
                           		set(
                           			current, 
                           			"assignment",
                            		lv_assignment_1_0, 
                            		"Assignment");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:157:6: ( (lv_arrayMethod_2_0= ruleArrayMethod ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:157:6: ( (lv_arrayMethod_2_0= ruleArrayMethod ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:158:1: (lv_arrayMethod_2_0= ruleArrayMethod )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:158:1: (lv_arrayMethod_2_0= ruleArrayMethod )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:159:3: lv_arrayMethod_2_0= ruleArrayMethod
                    {
                     
                    	        newCompositeNode(grammarAccess.getElementAccess().getArrayMethodArrayMethodParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayMethod_in_ruleElement276);
                    lv_arrayMethod_2_0=ruleArrayMethod();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getElementRule());
                    	        }
                           		set(
                           			current, 
                           			"arrayMethod",
                            		lv_arrayMethod_2_0, 
                            		"ArrayMethod");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:176:6: ( (lv_function_3_0= ruleFunction ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:176:6: ( (lv_function_3_0= ruleFunction ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:177:1: (lv_function_3_0= ruleFunction )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:177:1: (lv_function_3_0= ruleFunction )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:178:3: lv_function_3_0= ruleFunction
                    {
                     
                    	        newCompositeNode(grammarAccess.getElementAccess().getFunctionFunctionParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFunction_in_ruleElement303);
                    lv_function_3_0=ruleFunction();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getElementRule());
                    	        }
                           		set(
                           			current, 
                           			"function",
                            		lv_function_3_0, 
                            		"Function");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElement"


    // $ANTLR start "entryRuleVarDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:202:1: entryRuleVarDec returns [EObject current=null] : iv_ruleVarDec= ruleVarDec EOF ;
    public final EObject entryRuleVarDec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVarDec = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:203:2: (iv_ruleVarDec= ruleVarDec EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:204:2: iv_ruleVarDec= ruleVarDec EOF
            {
             newCompositeNode(grammarAccess.getVarDecRule()); 
            pushFollow(FOLLOW_ruleVarDec_in_entryRuleVarDec339);
            iv_ruleVarDec=ruleVarDec();

            state._fsp--;

             current =iv_ruleVarDec; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVarDec349); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVarDec"


    // $ANTLR start "ruleVarDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:211:1: ruleVarDec returns [EObject current=null] : ( ( (lv_primitiveDec_0_0= rulePrimitiveDec ) ) | ( (lv_arrayDec_1_0= ruleArrayDec ) ) ) ;
    public final EObject ruleVarDec() throws RecognitionException {
        EObject current = null;

        EObject lv_primitiveDec_0_0 = null;

        EObject lv_arrayDec_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:214:28: ( ( ( (lv_primitiveDec_0_0= rulePrimitiveDec ) ) | ( (lv_arrayDec_1_0= ruleArrayDec ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:215:1: ( ( (lv_primitiveDec_0_0= rulePrimitiveDec ) ) | ( (lv_arrayDec_1_0= ruleArrayDec ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:215:1: ( ( (lv_primitiveDec_0_0= rulePrimitiveDec ) ) | ( (lv_arrayDec_1_0= ruleArrayDec ) ) )
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==11||(LA3_0>=13 && LA3_0<=14)) ) {
                alt3=1;
            }
            else if ( (LA3_0==15) ) {
                alt3=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }
            switch (alt3) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:215:2: ( (lv_primitiveDec_0_0= rulePrimitiveDec ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:215:2: ( (lv_primitiveDec_0_0= rulePrimitiveDec ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:216:1: (lv_primitiveDec_0_0= rulePrimitiveDec )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:216:1: (lv_primitiveDec_0_0= rulePrimitiveDec )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:217:3: lv_primitiveDec_0_0= rulePrimitiveDec
                    {
                     
                    	        newCompositeNode(grammarAccess.getVarDecAccess().getPrimitiveDecPrimitiveDecParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_rulePrimitiveDec_in_ruleVarDec395);
                    lv_primitiveDec_0_0=rulePrimitiveDec();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getVarDecRule());
                    	        }
                           		set(
                           			current, 
                           			"primitiveDec",
                            		lv_primitiveDec_0_0, 
                            		"PrimitiveDec");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:234:6: ( (lv_arrayDec_1_0= ruleArrayDec ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:234:6: ( (lv_arrayDec_1_0= ruleArrayDec ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:235:1: (lv_arrayDec_1_0= ruleArrayDec )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:235:1: (lv_arrayDec_1_0= ruleArrayDec )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:236:3: lv_arrayDec_1_0= ruleArrayDec
                    {
                     
                    	        newCompositeNode(grammarAccess.getVarDecAccess().getArrayDecArrayDecParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayDec_in_ruleVarDec422);
                    lv_arrayDec_1_0=ruleArrayDec();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getVarDecRule());
                    	        }
                           		set(
                           			current, 
                           			"arrayDec",
                            		lv_arrayDec_1_0, 
                            		"ArrayDec");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVarDec"


    // $ANTLR start "entryRulePrimitiveDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:260:1: entryRulePrimitiveDec returns [EObject current=null] : iv_rulePrimitiveDec= rulePrimitiveDec EOF ;
    public final EObject entryRulePrimitiveDec() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePrimitiveDec = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:261:2: (iv_rulePrimitiveDec= rulePrimitiveDec EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:262:2: iv_rulePrimitiveDec= rulePrimitiveDec EOF
            {
             newCompositeNode(grammarAccess.getPrimitiveDecRule()); 
            pushFollow(FOLLOW_rulePrimitiveDec_in_entryRulePrimitiveDec458);
            iv_rulePrimitiveDec=rulePrimitiveDec();

            state._fsp--;

             current =iv_rulePrimitiveDec; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePrimitiveDec468); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePrimitiveDec"


    // $ANTLR start "rulePrimitiveDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:269:1: rulePrimitiveDec returns [EObject current=null] : ( ( (lv_intDec_0_0= ruleIntDec ) ) | ( (lv_realDec_1_0= ruleRealDec ) ) | ( (lv_partitionDec_2_0= rulePartitionDec ) ) ) ;
    public final EObject rulePrimitiveDec() throws RecognitionException {
        EObject current = null;

        EObject lv_intDec_0_0 = null;

        EObject lv_realDec_1_0 = null;

        EObject lv_partitionDec_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:272:28: ( ( ( (lv_intDec_0_0= ruleIntDec ) ) | ( (lv_realDec_1_0= ruleRealDec ) ) | ( (lv_partitionDec_2_0= rulePartitionDec ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:273:1: ( ( (lv_intDec_0_0= ruleIntDec ) ) | ( (lv_realDec_1_0= ruleRealDec ) ) | ( (lv_partitionDec_2_0= rulePartitionDec ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:273:1: ( ( (lv_intDec_0_0= ruleIntDec ) ) | ( (lv_realDec_1_0= ruleRealDec ) ) | ( (lv_partitionDec_2_0= rulePartitionDec ) ) )
            int alt4=3;
            switch ( input.LA(1) ) {
            case 11:
                {
                alt4=1;
                }
                break;
            case 13:
                {
                alt4=2;
                }
                break;
            case 14:
                {
                alt4=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }

            switch (alt4) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:273:2: ( (lv_intDec_0_0= ruleIntDec ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:273:2: ( (lv_intDec_0_0= ruleIntDec ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:274:1: (lv_intDec_0_0= ruleIntDec )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:274:1: (lv_intDec_0_0= ruleIntDec )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:275:3: lv_intDec_0_0= ruleIntDec
                    {
                     
                    	        newCompositeNode(grammarAccess.getPrimitiveDecAccess().getIntDecIntDecParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleIntDec_in_rulePrimitiveDec514);
                    lv_intDec_0_0=ruleIntDec();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getPrimitiveDecRule());
                    	        }
                           		set(
                           			current, 
                           			"intDec",
                            		lv_intDec_0_0, 
                            		"IntDec");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:292:6: ( (lv_realDec_1_0= ruleRealDec ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:292:6: ( (lv_realDec_1_0= ruleRealDec ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:293:1: (lv_realDec_1_0= ruleRealDec )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:293:1: (lv_realDec_1_0= ruleRealDec )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:294:3: lv_realDec_1_0= ruleRealDec
                    {
                     
                    	        newCompositeNode(grammarAccess.getPrimitiveDecAccess().getRealDecRealDecParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleRealDec_in_rulePrimitiveDec541);
                    lv_realDec_1_0=ruleRealDec();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getPrimitiveDecRule());
                    	        }
                           		set(
                           			current, 
                           			"realDec",
                            		lv_realDec_1_0, 
                            		"RealDec");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:311:6: ( (lv_partitionDec_2_0= rulePartitionDec ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:311:6: ( (lv_partitionDec_2_0= rulePartitionDec ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:312:1: (lv_partitionDec_2_0= rulePartitionDec )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:312:1: (lv_partitionDec_2_0= rulePartitionDec )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:313:3: lv_partitionDec_2_0= rulePartitionDec
                    {
                     
                    	        newCompositeNode(grammarAccess.getPrimitiveDecAccess().getPartitionDecPartitionDecParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_rulePartitionDec_in_rulePrimitiveDec568);
                    lv_partitionDec_2_0=rulePartitionDec();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getPrimitiveDecRule());
                    	        }
                           		set(
                           			current, 
                           			"partitionDec",
                            		lv_partitionDec_2_0, 
                            		"PartitionDec");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePrimitiveDec"


    // $ANTLR start "entryRuleIntDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:337:1: entryRuleIntDec returns [EObject current=null] : iv_ruleIntDec= ruleIntDec EOF ;
    public final EObject entryRuleIntDec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntDec = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:338:2: (iv_ruleIntDec= ruleIntDec EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:339:2: iv_ruleIntDec= ruleIntDec EOF
            {
             newCompositeNode(grammarAccess.getIntDecRule()); 
            pushFollow(FOLLOW_ruleIntDec_in_entryRuleIntDec604);
            iv_ruleIntDec=ruleIntDec();

            state._fsp--;

             current =iv_ruleIntDec; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntDec614); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntDec"


    // $ANTLR start "ruleIntDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:346:1: ruleIntDec returns [EObject current=null] : ( ( (lv_type_0_0= 'Int' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* ) ;
    public final EObject ruleIntDec() throws RecognitionException {
        EObject current = null;

        Token lv_type_0_0=null;
        Token otherlv_2=null;
        EObject lv_vars_1_0 = null;

        EObject lv_vars_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:349:28: ( ( ( (lv_type_0_0= 'Int' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:350:1: ( ( (lv_type_0_0= 'Int' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:350:1: ( ( (lv_type_0_0= 'Int' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:350:2: ( (lv_type_0_0= 'Int' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )*
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:350:2: ( (lv_type_0_0= 'Int' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:351:1: (lv_type_0_0= 'Int' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:351:1: (lv_type_0_0= 'Int' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:352:3: lv_type_0_0= 'Int'
            {
            lv_type_0_0=(Token)match(input,11,FOLLOW_11_in_ruleIntDec657); 

                    newLeafNode(lv_type_0_0, grammarAccess.getIntDecAccess().getTypeIntKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIntDecRule());
            	        }
                   		setWithLastConsumed(current, "type", lv_type_0_0, "Int");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:365:2: ( (lv_vars_1_0= ruleSimpleVariable ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:366:1: (lv_vars_1_0= ruleSimpleVariable )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:366:1: (lv_vars_1_0= ruleSimpleVariable )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:367:3: lv_vars_1_0= ruleSimpleVariable
            {
             
            	        newCompositeNode(grammarAccess.getIntDecAccess().getVarsSimpleVariableParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleSimpleVariable_in_ruleIntDec691);
            lv_vars_1_0=ruleSimpleVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getIntDecRule());
            	        }
                   		add(
                   			current, 
                   			"vars",
                    		lv_vars_1_0, 
                    		"SimpleVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:383:2: (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==12) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:383:4: otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) )
            	    {
            	    otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleIntDec704); 

            	        	newLeafNode(otherlv_2, grammarAccess.getIntDecAccess().getCommaKeyword_2_0());
            	        
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:387:1: ( (lv_vars_3_0= ruleSimpleVariable ) )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:388:1: (lv_vars_3_0= ruleSimpleVariable )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:388:1: (lv_vars_3_0= ruleSimpleVariable )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:389:3: lv_vars_3_0= ruleSimpleVariable
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getIntDecAccess().getVarsSimpleVariableParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleSimpleVariable_in_ruleIntDec725);
            	    lv_vars_3_0=ruleSimpleVariable();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getIntDecRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"vars",
            	            		lv_vars_3_0, 
            	            		"SimpleVariable");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntDec"


    // $ANTLR start "entryRuleRealDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:413:1: entryRuleRealDec returns [EObject current=null] : iv_ruleRealDec= ruleRealDec EOF ;
    public final EObject entryRuleRealDec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRealDec = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:414:2: (iv_ruleRealDec= ruleRealDec EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:415:2: iv_ruleRealDec= ruleRealDec EOF
            {
             newCompositeNode(grammarAccess.getRealDecRule()); 
            pushFollow(FOLLOW_ruleRealDec_in_entryRuleRealDec763);
            iv_ruleRealDec=ruleRealDec();

            state._fsp--;

             current =iv_ruleRealDec; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRealDec773); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRealDec"


    // $ANTLR start "ruleRealDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:422:1: ruleRealDec returns [EObject current=null] : ( ( (lv_type_0_0= 'Real' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* ) ;
    public final EObject ruleRealDec() throws RecognitionException {
        EObject current = null;

        Token lv_type_0_0=null;
        Token otherlv_2=null;
        EObject lv_vars_1_0 = null;

        EObject lv_vars_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:425:28: ( ( ( (lv_type_0_0= 'Real' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:426:1: ( ( (lv_type_0_0= 'Real' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:426:1: ( ( (lv_type_0_0= 'Real' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:426:2: ( (lv_type_0_0= 'Real' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )*
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:426:2: ( (lv_type_0_0= 'Real' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:427:1: (lv_type_0_0= 'Real' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:427:1: (lv_type_0_0= 'Real' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:428:3: lv_type_0_0= 'Real'
            {
            lv_type_0_0=(Token)match(input,13,FOLLOW_13_in_ruleRealDec816); 

                    newLeafNode(lv_type_0_0, grammarAccess.getRealDecAccess().getTypeRealKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRealDecRule());
            	        }
                   		setWithLastConsumed(current, "type", lv_type_0_0, "Real");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:441:2: ( (lv_vars_1_0= ruleSimpleVariable ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:442:1: (lv_vars_1_0= ruleSimpleVariable )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:442:1: (lv_vars_1_0= ruleSimpleVariable )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:443:3: lv_vars_1_0= ruleSimpleVariable
            {
             
            	        newCompositeNode(grammarAccess.getRealDecAccess().getVarsSimpleVariableParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleSimpleVariable_in_ruleRealDec850);
            lv_vars_1_0=ruleSimpleVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRealDecRule());
            	        }
                   		add(
                   			current, 
                   			"vars",
                    		lv_vars_1_0, 
                    		"SimpleVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:459:2: (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==12) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:459:4: otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) )
            	    {
            	    otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleRealDec863); 

            	        	newLeafNode(otherlv_2, grammarAccess.getRealDecAccess().getCommaKeyword_2_0());
            	        
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:463:1: ( (lv_vars_3_0= ruleSimpleVariable ) )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:464:1: (lv_vars_3_0= ruleSimpleVariable )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:464:1: (lv_vars_3_0= ruleSimpleVariable )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:465:3: lv_vars_3_0= ruleSimpleVariable
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getRealDecAccess().getVarsSimpleVariableParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleSimpleVariable_in_ruleRealDec884);
            	    lv_vars_3_0=ruleSimpleVariable();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getRealDecRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"vars",
            	            		lv_vars_3_0, 
            	            		"SimpleVariable");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRealDec"


    // $ANTLR start "entryRulePartitionDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:489:1: entryRulePartitionDec returns [EObject current=null] : iv_rulePartitionDec= rulePartitionDec EOF ;
    public final EObject entryRulePartitionDec() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePartitionDec = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:490:2: (iv_rulePartitionDec= rulePartitionDec EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:491:2: iv_rulePartitionDec= rulePartitionDec EOF
            {
             newCompositeNode(grammarAccess.getPartitionDecRule()); 
            pushFollow(FOLLOW_rulePartitionDec_in_entryRulePartitionDec922);
            iv_rulePartitionDec=rulePartitionDec();

            state._fsp--;

             current =iv_rulePartitionDec; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePartitionDec932); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePartitionDec"


    // $ANTLR start "rulePartitionDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:498:1: rulePartitionDec returns [EObject current=null] : ( ( (lv_type_0_0= 'Partition' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* ) ;
    public final EObject rulePartitionDec() throws RecognitionException {
        EObject current = null;

        Token lv_type_0_0=null;
        Token otherlv_2=null;
        EObject lv_vars_1_0 = null;

        EObject lv_vars_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:501:28: ( ( ( (lv_type_0_0= 'Partition' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:502:1: ( ( (lv_type_0_0= 'Partition' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:502:1: ( ( (lv_type_0_0= 'Partition' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )* )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:502:2: ( (lv_type_0_0= 'Partition' ) ) ( (lv_vars_1_0= ruleSimpleVariable ) ) (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )*
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:502:2: ( (lv_type_0_0= 'Partition' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:503:1: (lv_type_0_0= 'Partition' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:503:1: (lv_type_0_0= 'Partition' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:504:3: lv_type_0_0= 'Partition'
            {
            lv_type_0_0=(Token)match(input,14,FOLLOW_14_in_rulePartitionDec975); 

                    newLeafNode(lv_type_0_0, grammarAccess.getPartitionDecAccess().getTypePartitionKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPartitionDecRule());
            	        }
                   		setWithLastConsumed(current, "type", lv_type_0_0, "Partition");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:517:2: ( (lv_vars_1_0= ruleSimpleVariable ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:518:1: (lv_vars_1_0= ruleSimpleVariable )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:518:1: (lv_vars_1_0= ruleSimpleVariable )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:519:3: lv_vars_1_0= ruleSimpleVariable
            {
             
            	        newCompositeNode(grammarAccess.getPartitionDecAccess().getVarsSimpleVariableParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleSimpleVariable_in_rulePartitionDec1009);
            lv_vars_1_0=ruleSimpleVariable();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPartitionDecRule());
            	        }
                   		add(
                   			current, 
                   			"vars",
                    		lv_vars_1_0, 
                    		"SimpleVariable");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:535:2: (otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==12) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:535:4: otherlv_2= ',' ( (lv_vars_3_0= ruleSimpleVariable ) )
            	    {
            	    otherlv_2=(Token)match(input,12,FOLLOW_12_in_rulePartitionDec1022); 

            	        	newLeafNode(otherlv_2, grammarAccess.getPartitionDecAccess().getCommaKeyword_2_0());
            	        
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:539:1: ( (lv_vars_3_0= ruleSimpleVariable ) )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:540:1: (lv_vars_3_0= ruleSimpleVariable )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:540:1: (lv_vars_3_0= ruleSimpleVariable )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:541:3: lv_vars_3_0= ruleSimpleVariable
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPartitionDecAccess().getVarsSimpleVariableParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleSimpleVariable_in_rulePartitionDec1043);
            	    lv_vars_3_0=ruleSimpleVariable();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPartitionDecRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"vars",
            	            		lv_vars_3_0, 
            	            		"SimpleVariable");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePartitionDec"


    // $ANTLR start "entryRuleArrayDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:565:1: entryRuleArrayDec returns [EObject current=null] : iv_ruleArrayDec= ruleArrayDec EOF ;
    public final EObject entryRuleArrayDec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArrayDec = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:566:2: (iv_ruleArrayDec= ruleArrayDec EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:567:2: iv_ruleArrayDec= ruleArrayDec EOF
            {
             newCompositeNode(grammarAccess.getArrayDecRule()); 
            pushFollow(FOLLOW_ruleArrayDec_in_entryRuleArrayDec1081);
            iv_ruleArrayDec=ruleArrayDec();

            state._fsp--;

             current =iv_ruleArrayDec; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleArrayDec1091); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArrayDec"


    // $ANTLR start "ruleArrayDec"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:574:1: ruleArrayDec returns [EObject current=null] : ( ( (lv_array_0_0= 'array' ) ) otherlv_1= '(' ( (lv_colums_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_rows_4_0= RULE_INT ) ) )? otherlv_5= ')' ( ( (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' ) ) ) ( (lv_arrayVars_7_0= ruleArray ) ) (otherlv_8= ',' ( (lv_arrayVars_9_0= ruleArray ) ) )* ) ;
    public final EObject ruleArrayDec() throws RecognitionException {
        EObject current = null;

        Token lv_array_0_0=null;
        Token otherlv_1=null;
        Token lv_colums_2_0=null;
        Token otherlv_3=null;
        Token lv_rows_4_0=null;
        Token otherlv_5=null;
        Token lv_type_6_1=null;
        Token lv_type_6_2=null;
        Token lv_type_6_3=null;
        Token otherlv_8=null;
        EObject lv_arrayVars_7_0 = null;

        EObject lv_arrayVars_9_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:577:28: ( ( ( (lv_array_0_0= 'array' ) ) otherlv_1= '(' ( (lv_colums_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_rows_4_0= RULE_INT ) ) )? otherlv_5= ')' ( ( (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' ) ) ) ( (lv_arrayVars_7_0= ruleArray ) ) (otherlv_8= ',' ( (lv_arrayVars_9_0= ruleArray ) ) )* ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:578:1: ( ( (lv_array_0_0= 'array' ) ) otherlv_1= '(' ( (lv_colums_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_rows_4_0= RULE_INT ) ) )? otherlv_5= ')' ( ( (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' ) ) ) ( (lv_arrayVars_7_0= ruleArray ) ) (otherlv_8= ',' ( (lv_arrayVars_9_0= ruleArray ) ) )* )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:578:1: ( ( (lv_array_0_0= 'array' ) ) otherlv_1= '(' ( (lv_colums_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_rows_4_0= RULE_INT ) ) )? otherlv_5= ')' ( ( (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' ) ) ) ( (lv_arrayVars_7_0= ruleArray ) ) (otherlv_8= ',' ( (lv_arrayVars_9_0= ruleArray ) ) )* )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:578:2: ( (lv_array_0_0= 'array' ) ) otherlv_1= '(' ( (lv_colums_2_0= RULE_INT ) ) (otherlv_3= ',' ( (lv_rows_4_0= RULE_INT ) ) )? otherlv_5= ')' ( ( (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' ) ) ) ( (lv_arrayVars_7_0= ruleArray ) ) (otherlv_8= ',' ( (lv_arrayVars_9_0= ruleArray ) ) )*
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:578:2: ( (lv_array_0_0= 'array' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:579:1: (lv_array_0_0= 'array' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:579:1: (lv_array_0_0= 'array' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:580:3: lv_array_0_0= 'array'
            {
            lv_array_0_0=(Token)match(input,15,FOLLOW_15_in_ruleArrayDec1134); 

                    newLeafNode(lv_array_0_0, grammarAccess.getArrayDecAccess().getArrayArrayKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getArrayDecRule());
            	        }
                   		setWithLastConsumed(current, "array", lv_array_0_0, "array");
            	    

            }


            }

            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleArrayDec1159); 

                	newLeafNode(otherlv_1, grammarAccess.getArrayDecAccess().getLeftParenthesisKeyword_1());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:597:1: ( (lv_colums_2_0= RULE_INT ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:598:1: (lv_colums_2_0= RULE_INT )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:598:1: (lv_colums_2_0= RULE_INT )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:599:3: lv_colums_2_0= RULE_INT
            {
            lv_colums_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleArrayDec1176); 

            			newLeafNode(lv_colums_2_0, grammarAccess.getArrayDecAccess().getColumsINTTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getArrayDecRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"colums",
                    		lv_colums_2_0, 
                    		"INT");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:615:2: (otherlv_3= ',' ( (lv_rows_4_0= RULE_INT ) ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==12) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:615:4: otherlv_3= ',' ( (lv_rows_4_0= RULE_INT ) )
                    {
                    otherlv_3=(Token)match(input,12,FOLLOW_12_in_ruleArrayDec1194); 

                        	newLeafNode(otherlv_3, grammarAccess.getArrayDecAccess().getCommaKeyword_3_0());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:619:1: ( (lv_rows_4_0= RULE_INT ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:620:1: (lv_rows_4_0= RULE_INT )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:620:1: (lv_rows_4_0= RULE_INT )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:621:3: lv_rows_4_0= RULE_INT
                    {
                    lv_rows_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleArrayDec1211); 

                    			newLeafNode(lv_rows_4_0, grammarAccess.getArrayDecAccess().getRowsINTTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getArrayDecRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"rows",
                            		lv_rows_4_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,17,FOLLOW_17_in_ruleArrayDec1230); 

                	newLeafNode(otherlv_5, grammarAccess.getArrayDecAccess().getRightParenthesisKeyword_4());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:641:1: ( ( (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:642:1: ( (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:642:1: ( (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:643:1: (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:643:1: (lv_type_6_1= 'Int' | lv_type_6_2= 'Real' | lv_type_6_3= 'Partition' )
            int alt9=3;
            switch ( input.LA(1) ) {
            case 11:
                {
                alt9=1;
                }
                break;
            case 13:
                {
                alt9=2;
                }
                break;
            case 14:
                {
                alt9=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:644:3: lv_type_6_1= 'Int'
                    {
                    lv_type_6_1=(Token)match(input,11,FOLLOW_11_in_ruleArrayDec1250); 

                            newLeafNode(lv_type_6_1, grammarAccess.getArrayDecAccess().getTypeIntKeyword_5_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getArrayDecRule());
                    	        }
                           		setWithLastConsumed(current, "type", lv_type_6_1, null);
                    	    

                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:656:8: lv_type_6_2= 'Real'
                    {
                    lv_type_6_2=(Token)match(input,13,FOLLOW_13_in_ruleArrayDec1279); 

                            newLeafNode(lv_type_6_2, grammarAccess.getArrayDecAccess().getTypeRealKeyword_5_0_1());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getArrayDecRule());
                    	        }
                           		setWithLastConsumed(current, "type", lv_type_6_2, null);
                    	    

                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:668:8: lv_type_6_3= 'Partition'
                    {
                    lv_type_6_3=(Token)match(input,14,FOLLOW_14_in_ruleArrayDec1308); 

                            newLeafNode(lv_type_6_3, grammarAccess.getArrayDecAccess().getTypePartitionKeyword_5_0_2());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getArrayDecRule());
                    	        }
                           		setWithLastConsumed(current, "type", lv_type_6_3, null);
                    	    

                    }
                    break;

            }


            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:683:2: ( (lv_arrayVars_7_0= ruleArray ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:684:1: (lv_arrayVars_7_0= ruleArray )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:684:1: (lv_arrayVars_7_0= ruleArray )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:685:3: lv_arrayVars_7_0= ruleArray
            {
             
            	        newCompositeNode(grammarAccess.getArrayDecAccess().getArrayVarsArrayParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleArray_in_ruleArrayDec1345);
            lv_arrayVars_7_0=ruleArray();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getArrayDecRule());
            	        }
                   		add(
                   			current, 
                   			"arrayVars",
                    		lv_arrayVars_7_0, 
                    		"Array");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:701:2: (otherlv_8= ',' ( (lv_arrayVars_9_0= ruleArray ) ) )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==12) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:701:4: otherlv_8= ',' ( (lv_arrayVars_9_0= ruleArray ) )
            	    {
            	    otherlv_8=(Token)match(input,12,FOLLOW_12_in_ruleArrayDec1358); 

            	        	newLeafNode(otherlv_8, grammarAccess.getArrayDecAccess().getCommaKeyword_7_0());
            	        
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:705:1: ( (lv_arrayVars_9_0= ruleArray ) )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:706:1: (lv_arrayVars_9_0= ruleArray )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:706:1: (lv_arrayVars_9_0= ruleArray )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:707:3: lv_arrayVars_9_0= ruleArray
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getArrayDecAccess().getArrayVarsArrayParserRuleCall_7_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleArray_in_ruleArrayDec1379);
            	    lv_arrayVars_9_0=ruleArray();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getArrayDecRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"arrayVars",
            	            		lv_arrayVars_9_0, 
            	            		"Array");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArrayDec"


    // $ANTLR start "entryRuleAssignment"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:731:1: entryRuleAssignment returns [EObject current=null] : iv_ruleAssignment= ruleAssignment EOF ;
    public final EObject entryRuleAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssignment = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:732:2: (iv_ruleAssignment= ruleAssignment EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:733:2: iv_ruleAssignment= ruleAssignment EOF
            {
             newCompositeNode(grammarAccess.getAssignmentRule()); 
            pushFollow(FOLLOW_ruleAssignment_in_entryRuleAssignment1417);
            iv_ruleAssignment=ruleAssignment();

            state._fsp--;

             current =iv_ruleAssignment; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAssignment1427); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssignment"


    // $ANTLR start "ruleAssignment"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:740:1: ruleAssignment returns [EObject current=null] : ( ( ( (lv_dec_0_0= ruleVarDec ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* ) | ( (lv_arrayElement_4_0= ruleArrayElement ) ) ) otherlv_5= '=' ( ( (lv_calcCR_6_0= ruleCalcCR ) ) | ( (lv_calcMean_7_0= ruleCalcMean ) ) | ( (lv_number_8_0= ruleNumber ) ) | ( (lv_archive_9_0= ruleArchive ) ) | ( (otherlv_10= RULE_ID ) ) | ( (lv_assignedAE_11_0= ruleArrayElement ) ) ) ) ;
    public final EObject ruleAssignment() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_10=null;
        EObject lv_dec_0_0 = null;

        EObject lv_arrayElement_4_0 = null;

        EObject lv_calcCR_6_0 = null;

        EObject lv_calcMean_7_0 = null;

        EObject lv_number_8_0 = null;

        EObject lv_archive_9_0 = null;

        EObject lv_assignedAE_11_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:743:28: ( ( ( ( (lv_dec_0_0= ruleVarDec ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* ) | ( (lv_arrayElement_4_0= ruleArrayElement ) ) ) otherlv_5= '=' ( ( (lv_calcCR_6_0= ruleCalcCR ) ) | ( (lv_calcMean_7_0= ruleCalcMean ) ) | ( (lv_number_8_0= ruleNumber ) ) | ( (lv_archive_9_0= ruleArchive ) ) | ( (otherlv_10= RULE_ID ) ) | ( (lv_assignedAE_11_0= ruleArrayElement ) ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:744:1: ( ( ( (lv_dec_0_0= ruleVarDec ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* ) | ( (lv_arrayElement_4_0= ruleArrayElement ) ) ) otherlv_5= '=' ( ( (lv_calcCR_6_0= ruleCalcCR ) ) | ( (lv_calcMean_7_0= ruleCalcMean ) ) | ( (lv_number_8_0= ruleNumber ) ) | ( (lv_archive_9_0= ruleArchive ) ) | ( (otherlv_10= RULE_ID ) ) | ( (lv_assignedAE_11_0= ruleArrayElement ) ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:744:1: ( ( ( (lv_dec_0_0= ruleVarDec ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* ) | ( (lv_arrayElement_4_0= ruleArrayElement ) ) ) otherlv_5= '=' ( ( (lv_calcCR_6_0= ruleCalcCR ) ) | ( (lv_calcMean_7_0= ruleCalcMean ) ) | ( (lv_number_8_0= ruleNumber ) ) | ( (lv_archive_9_0= ruleArchive ) ) | ( (otherlv_10= RULE_ID ) ) | ( (lv_assignedAE_11_0= ruleArrayElement ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:744:2: ( ( (lv_dec_0_0= ruleVarDec ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* ) | ( (lv_arrayElement_4_0= ruleArrayElement ) ) ) otherlv_5= '=' ( ( (lv_calcCR_6_0= ruleCalcCR ) ) | ( (lv_calcMean_7_0= ruleCalcMean ) ) | ( (lv_number_8_0= ruleNumber ) ) | ( (lv_archive_9_0= ruleArchive ) ) | ( (otherlv_10= RULE_ID ) ) | ( (lv_assignedAE_11_0= ruleArrayElement ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:744:2: ( ( (lv_dec_0_0= ruleVarDec ) ) | ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* ) | ( (lv_arrayElement_4_0= ruleArrayElement ) ) )
            int alt12=3;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==11||(LA12_0>=13 && LA12_0<=15)) ) {
                alt12=1;
            }
            else if ( (LA12_0==RULE_ID) ) {
                int LA12_2 = input.LA(2);

                if ( (LA12_2==12||LA12_2==18) ) {
                    alt12=2;
                }
                else if ( (LA12_2==37) ) {
                    alt12=3;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 12, 2, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:744:3: ( (lv_dec_0_0= ruleVarDec ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:744:3: ( (lv_dec_0_0= ruleVarDec ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:745:1: (lv_dec_0_0= ruleVarDec )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:745:1: (lv_dec_0_0= ruleVarDec )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:746:3: lv_dec_0_0= ruleVarDec
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentAccess().getDecVarDecParserRuleCall_0_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleVarDec_in_ruleAssignment1474);
                    lv_dec_0_0=ruleVarDec();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRule());
                    	        }
                           		set(
                           			current, 
                           			"dec",
                            		lv_dec_0_0, 
                            		"VarDec");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:763:6: ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:763:6: ( ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:763:7: ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )*
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:763:7: ( (otherlv_1= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:764:1: (otherlv_1= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:764:1: (otherlv_1= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:765:3: otherlv_1= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getAssignmentRule());
                    	        }
                            
                    otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAssignment1501); 

                    		newLeafNode(otherlv_1, grammarAccess.getAssignmentAccess().getVariablesVariableCrossReference_0_1_0_0()); 
                    	

                    }


                    }

                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:776:2: (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )*
                    loop11:
                    do {
                        int alt11=2;
                        int LA11_0 = input.LA(1);

                        if ( (LA11_0==12) ) {
                            alt11=1;
                        }


                        switch (alt11) {
                    	case 1 :
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:776:4: otherlv_2= ',' ( (otherlv_3= RULE_ID ) )
                    	    {
                    	    otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleAssignment1514); 

                    	        	newLeafNode(otherlv_2, grammarAccess.getAssignmentAccess().getCommaKeyword_0_1_1_0());
                    	        
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:780:1: ( (otherlv_3= RULE_ID ) )
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:781:1: (otherlv_3= RULE_ID )
                    	    {
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:781:1: (otherlv_3= RULE_ID )
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:782:3: otherlv_3= RULE_ID
                    	    {

                    	    			if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getAssignmentRule());
                    	    	        }
                    	            
                    	    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAssignment1534); 

                    	    		newLeafNode(otherlv_3, grammarAccess.getAssignmentAccess().getVariablesVariableCrossReference_0_1_1_1_0()); 
                    	    	

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop11;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:794:6: ( (lv_arrayElement_4_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:794:6: ( (lv_arrayElement_4_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:795:1: (lv_arrayElement_4_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:795:1: (lv_arrayElement_4_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:796:3: lv_arrayElement_4_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentAccess().getArrayElementArrayElementParserRuleCall_0_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleAssignment1564);
                    lv_arrayElement_4_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRule());
                    	        }
                           		set(
                           			current, 
                           			"arrayElement",
                            		lv_arrayElement_4_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleAssignment1577); 

                	newLeafNode(otherlv_5, grammarAccess.getAssignmentAccess().getEqualsSignKeyword_1());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:816:1: ( ( (lv_calcCR_6_0= ruleCalcCR ) ) | ( (lv_calcMean_7_0= ruleCalcMean ) ) | ( (lv_number_8_0= ruleNumber ) ) | ( (lv_archive_9_0= ruleArchive ) ) | ( (otherlv_10= RULE_ID ) ) | ( (lv_assignedAE_11_0= ruleArrayElement ) ) )
            int alt13=6;
            switch ( input.LA(1) ) {
            case 30:
                {
                alt13=1;
                }
                break;
            case 31:
                {
                alt13=2;
                }
                break;
            case RULE_INT:
                {
                alt13=3;
                }
                break;
            case 35:
                {
                alt13=4;
                }
                break;
            case RULE_ID:
                {
                switch ( input.LA(2) ) {
                case 37:
                    {
                    alt13=6;
                    }
                    break;
                case 19:
                case 36:
                    {
                    alt13=4;
                    }
                    break;
                case EOF:
                case RULE_ID:
                case 11:
                case 13:
                case 14:
                case 15:
                case 23:
                case 24:
                case 28:
                case 29:
                case 30:
                case 31:
                case 32:
                case 33:
                    {
                    alt13=5;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("", 13, 5, input);

                    throw nvae;
                }

                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }

            switch (alt13) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:816:2: ( (lv_calcCR_6_0= ruleCalcCR ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:816:2: ( (lv_calcCR_6_0= ruleCalcCR ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:817:1: (lv_calcCR_6_0= ruleCalcCR )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:817:1: (lv_calcCR_6_0= ruleCalcCR )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:818:3: lv_calcCR_6_0= ruleCalcCR
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentAccess().getCalcCRCalcCRParserRuleCall_2_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcCR_in_ruleAssignment1599);
                    lv_calcCR_6_0=ruleCalcCR();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRule());
                    	        }
                           		set(
                           			current, 
                           			"calcCR",
                            		lv_calcCR_6_0, 
                            		"CalcCR");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:835:6: ( (lv_calcMean_7_0= ruleCalcMean ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:835:6: ( (lv_calcMean_7_0= ruleCalcMean ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:836:1: (lv_calcMean_7_0= ruleCalcMean )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:836:1: (lv_calcMean_7_0= ruleCalcMean )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:837:3: lv_calcMean_7_0= ruleCalcMean
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentAccess().getCalcMeanCalcMeanParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcMean_in_ruleAssignment1626);
                    lv_calcMean_7_0=ruleCalcMean();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRule());
                    	        }
                           		set(
                           			current, 
                           			"calcMean",
                            		lv_calcMean_7_0, 
                            		"CalcMean");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:854:6: ( (lv_number_8_0= ruleNumber ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:854:6: ( (lv_number_8_0= ruleNumber ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:855:1: (lv_number_8_0= ruleNumber )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:855:1: (lv_number_8_0= ruleNumber )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:856:3: lv_number_8_0= ruleNumber
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentAccess().getNumberNumberParserRuleCall_2_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleNumber_in_ruleAssignment1653);
                    lv_number_8_0=ruleNumber();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRule());
                    	        }
                           		set(
                           			current, 
                           			"number",
                            		lv_number_8_0, 
                            		"Number");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:873:6: ( (lv_archive_9_0= ruleArchive ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:873:6: ( (lv_archive_9_0= ruleArchive ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:874:1: (lv_archive_9_0= ruleArchive )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:874:1: (lv_archive_9_0= ruleArchive )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:875:3: lv_archive_9_0= ruleArchive
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentAccess().getArchiveArchiveParserRuleCall_2_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArchive_in_ruleAssignment1680);
                    lv_archive_9_0=ruleArchive();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRule());
                    	        }
                           		set(
                           			current, 
                           			"archive",
                            		lv_archive_9_0, 
                            		"Archive");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 5 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:892:6: ( (otherlv_10= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:892:6: ( (otherlv_10= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:893:1: (otherlv_10= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:893:1: (otherlv_10= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:894:3: otherlv_10= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getAssignmentRule());
                    	        }
                            
                    otherlv_10=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAssignment1706); 

                    		newLeafNode(otherlv_10, grammarAccess.getAssignmentAccess().getVariableVariableCrossReference_2_4_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 6 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:906:6: ( (lv_assignedAE_11_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:906:6: ( (lv_assignedAE_11_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:907:1: (lv_assignedAE_11_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:907:1: (lv_assignedAE_11_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:908:3: lv_assignedAE_11_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getAssignmentAccess().getAssignedAEArrayElementParserRuleCall_2_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleAssignment1733);
                    lv_assignedAE_11_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAssignmentRule());
                    	        }
                           		set(
                           			current, 
                           			"assignedAE",
                            		lv_assignedAE_11_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssignment"


    // $ANTLR start "entryRuleArrayMethod"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:932:1: entryRuleArrayMethod returns [EObject current=null] : iv_ruleArrayMethod= ruleArrayMethod EOF ;
    public final EObject entryRuleArrayMethod() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArrayMethod = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:933:2: (iv_ruleArrayMethod= ruleArrayMethod EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:934:2: iv_ruleArrayMethod= ruleArrayMethod EOF
            {
             newCompositeNode(grammarAccess.getArrayMethodRule()); 
            pushFollow(FOLLOW_ruleArrayMethod_in_entryRuleArrayMethod1770);
            iv_ruleArrayMethod=ruleArrayMethod();

            state._fsp--;

             current =iv_ruleArrayMethod; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleArrayMethod1780); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArrayMethod"


    // $ANTLR start "ruleArrayMethod"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:941:1: ruleArrayMethod returns [EObject current=null] : ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) ) ;
    public final EObject ruleArrayMethod() throws RecognitionException {
        EObject current = null;

        EObject lv_size_0_0 = null;

        EObject lv_add_1_0 = null;

        EObject lv_delete_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:944:28: ( ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:945:1: ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:945:1: ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) )
            int alt14=3;
            alt14 = dfa14.predict(input);
            switch (alt14) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:945:2: ( (lv_size_0_0= ruleSize ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:945:2: ( (lv_size_0_0= ruleSize ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:946:1: (lv_size_0_0= ruleSize )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:946:1: (lv_size_0_0= ruleSize )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:947:3: lv_size_0_0= ruleSize
                    {
                     
                    	        newCompositeNode(grammarAccess.getArrayMethodAccess().getSizeSizeParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleSize_in_ruleArrayMethod1826);
                    lv_size_0_0=ruleSize();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getArrayMethodRule());
                    	        }
                           		set(
                           			current, 
                           			"size",
                            		lv_size_0_0, 
                            		"Size");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:964:6: ( (lv_add_1_0= ruleAdd ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:964:6: ( (lv_add_1_0= ruleAdd ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:965:1: (lv_add_1_0= ruleAdd )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:965:1: (lv_add_1_0= ruleAdd )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:966:3: lv_add_1_0= ruleAdd
                    {
                     
                    	        newCompositeNode(grammarAccess.getArrayMethodAccess().getAddAddParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAdd_in_ruleArrayMethod1853);
                    lv_add_1_0=ruleAdd();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getArrayMethodRule());
                    	        }
                           		set(
                           			current, 
                           			"add",
                            		lv_add_1_0, 
                            		"Add");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:983:6: ( (lv_delete_2_0= ruleDelete ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:983:6: ( (lv_delete_2_0= ruleDelete ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:984:1: (lv_delete_2_0= ruleDelete )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:984:1: (lv_delete_2_0= ruleDelete )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:985:3: lv_delete_2_0= ruleDelete
                    {
                     
                    	        newCompositeNode(grammarAccess.getArrayMethodAccess().getDeleteDeleteParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDelete_in_ruleArrayMethod1880);
                    lv_delete_2_0=ruleDelete();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getArrayMethodRule());
                    	        }
                           		set(
                           			current, 
                           			"delete",
                            		lv_delete_2_0, 
                            		"Delete");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArrayMethod"


    // $ANTLR start "entryRuleSize"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1009:1: entryRuleSize returns [EObject current=null] : iv_ruleSize= ruleSize EOF ;
    public final EObject entryRuleSize() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSize = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1010:2: (iv_ruleSize= ruleSize EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1011:2: iv_ruleSize= ruleSize EOF
            {
             newCompositeNode(grammarAccess.getSizeRule()); 
            pushFollow(FOLLOW_ruleSize_in_entryRuleSize1916);
            iv_ruleSize=ruleSize();

            state._fsp--;

             current =iv_ruleSize; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSize1926); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSize"


    // $ANTLR start "ruleSize"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1018:1: ruleSize returns [EObject current=null] : ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'size' ) ) otherlv_4= '(' otherlv_5= ')' ) ;
    public final EObject ruleSize() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token lv_method_3_0=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        EObject lv_arrayElement_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1021:28: ( ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'size' ) ) otherlv_4= '(' otherlv_5= ')' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1022:1: ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'size' ) ) otherlv_4= '(' otherlv_5= ')' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1022:1: ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'size' ) ) otherlv_4= '(' otherlv_5= ')' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1022:2: ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'size' ) ) otherlv_4= '(' otherlv_5= ')'
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1022:2: ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) )
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==RULE_ID) ) {
                int LA15_1 = input.LA(2);

                if ( (LA15_1==37) ) {
                    alt15=2;
                }
                else if ( (LA15_1==19) ) {
                    alt15=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 15, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 15, 0, input);

                throw nvae;
            }
            switch (alt15) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1022:3: ( (otherlv_0= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1022:3: ( (otherlv_0= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1023:1: (otherlv_0= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1023:1: (otherlv_0= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1024:3: otherlv_0= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getSizeRule());
                    	        }
                            
                    otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSize1972); 

                    		newLeafNode(otherlv_0, grammarAccess.getSizeAccess().getArrayArrayCrossReference_0_0_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1036:6: ( (lv_arrayElement_1_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1036:6: ( (lv_arrayElement_1_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1037:1: (lv_arrayElement_1_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1037:1: (lv_arrayElement_1_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1038:3: lv_arrayElement_1_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getSizeAccess().getArrayElementArrayElementParserRuleCall_0_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleSize1999);
                    lv_arrayElement_1_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getSizeRule());
                    	        }
                           		set(
                           			current, 
                           			"arrayElement",
                            		lv_arrayElement_1_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleSize2012); 

                	newLeafNode(otherlv_2, grammarAccess.getSizeAccess().getFullStopKeyword_1());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1058:1: ( (lv_method_3_0= 'size' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1059:1: (lv_method_3_0= 'size' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1059:1: (lv_method_3_0= 'size' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1060:3: lv_method_3_0= 'size'
            {
            lv_method_3_0=(Token)match(input,20,FOLLOW_20_in_ruleSize2030); 

                    newLeafNode(lv_method_3_0, grammarAccess.getSizeAccess().getMethodSizeKeyword_2_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSizeRule());
            	        }
                   		setWithLastConsumed(current, "method", lv_method_3_0, "size");
            	    

            }


            }

            otherlv_4=(Token)match(input,16,FOLLOW_16_in_ruleSize2055); 

                	newLeafNode(otherlv_4, grammarAccess.getSizeAccess().getLeftParenthesisKeyword_3());
                
            otherlv_5=(Token)match(input,17,FOLLOW_17_in_ruleSize2067); 

                	newLeafNode(otherlv_5, grammarAccess.getSizeAccess().getRightParenthesisKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSize"


    // $ANTLR start "entryRuleAdd"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1089:1: entryRuleAdd returns [EObject current=null] : iv_ruleAdd= ruleAdd EOF ;
    public final EObject entryRuleAdd() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAdd = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1090:2: (iv_ruleAdd= ruleAdd EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1091:2: iv_ruleAdd= ruleAdd EOF
            {
             newCompositeNode(grammarAccess.getAddRule()); 
            pushFollow(FOLLOW_ruleAdd_in_entryRuleAdd2103);
            iv_ruleAdd=ruleAdd();

            state._fsp--;

             current =iv_ruleAdd; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAdd2113); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAdd"


    // $ANTLR start "ruleAdd"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1098:1: ruleAdd returns [EObject current=null] : ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'add' ) ) otherlv_4= '(' ( ( (lv_numParams_5_0= ruleNumber ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_aeParams_7_0= ruleArrayElement ) ) | ( (lv_archive_8_0= ruleArchive ) ) | ( (lv_sizes_9_0= ruleSize ) ) | ( (lv_calcCRs_10_0= ruleCalcCR ) ) | ( (lv_calcMeans_11_0= ruleCalcMean ) ) ) (otherlv_12= ',' ( ( (lv_numParams_13_0= ruleNumber ) ) | ( (otherlv_14= RULE_ID ) ) | ( (lv_aeParams_15_0= ruleArrayElement ) ) | ( (lv_archive_16_0= ruleArchive ) ) | ( (lv_sizes_17_0= ruleSize ) ) | ( (lv_calcCRs_18_0= ruleCalcCR ) ) | ( (lv_calcMeans_19_0= ruleCalcMean ) ) ) )* otherlv_20= ')' ) ;
    public final EObject ruleAdd() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token lv_method_3_0=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_12=null;
        Token otherlv_14=null;
        Token otherlv_20=null;
        EObject lv_arrayElement_1_0 = null;

        EObject lv_numParams_5_0 = null;

        EObject lv_aeParams_7_0 = null;

        EObject lv_archive_8_0 = null;

        EObject lv_sizes_9_0 = null;

        EObject lv_calcCRs_10_0 = null;

        EObject lv_calcMeans_11_0 = null;

        EObject lv_numParams_13_0 = null;

        EObject lv_aeParams_15_0 = null;

        EObject lv_archive_16_0 = null;

        EObject lv_sizes_17_0 = null;

        EObject lv_calcCRs_18_0 = null;

        EObject lv_calcMeans_19_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1101:28: ( ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'add' ) ) otherlv_4= '(' ( ( (lv_numParams_5_0= ruleNumber ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_aeParams_7_0= ruleArrayElement ) ) | ( (lv_archive_8_0= ruleArchive ) ) | ( (lv_sizes_9_0= ruleSize ) ) | ( (lv_calcCRs_10_0= ruleCalcCR ) ) | ( (lv_calcMeans_11_0= ruleCalcMean ) ) ) (otherlv_12= ',' ( ( (lv_numParams_13_0= ruleNumber ) ) | ( (otherlv_14= RULE_ID ) ) | ( (lv_aeParams_15_0= ruleArrayElement ) ) | ( (lv_archive_16_0= ruleArchive ) ) | ( (lv_sizes_17_0= ruleSize ) ) | ( (lv_calcCRs_18_0= ruleCalcCR ) ) | ( (lv_calcMeans_19_0= ruleCalcMean ) ) ) )* otherlv_20= ')' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1102:1: ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'add' ) ) otherlv_4= '(' ( ( (lv_numParams_5_0= ruleNumber ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_aeParams_7_0= ruleArrayElement ) ) | ( (lv_archive_8_0= ruleArchive ) ) | ( (lv_sizes_9_0= ruleSize ) ) | ( (lv_calcCRs_10_0= ruleCalcCR ) ) | ( (lv_calcMeans_11_0= ruleCalcMean ) ) ) (otherlv_12= ',' ( ( (lv_numParams_13_0= ruleNumber ) ) | ( (otherlv_14= RULE_ID ) ) | ( (lv_aeParams_15_0= ruleArrayElement ) ) | ( (lv_archive_16_0= ruleArchive ) ) | ( (lv_sizes_17_0= ruleSize ) ) | ( (lv_calcCRs_18_0= ruleCalcCR ) ) | ( (lv_calcMeans_19_0= ruleCalcMean ) ) ) )* otherlv_20= ')' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1102:1: ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'add' ) ) otherlv_4= '(' ( ( (lv_numParams_5_0= ruleNumber ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_aeParams_7_0= ruleArrayElement ) ) | ( (lv_archive_8_0= ruleArchive ) ) | ( (lv_sizes_9_0= ruleSize ) ) | ( (lv_calcCRs_10_0= ruleCalcCR ) ) | ( (lv_calcMeans_11_0= ruleCalcMean ) ) ) (otherlv_12= ',' ( ( (lv_numParams_13_0= ruleNumber ) ) | ( (otherlv_14= RULE_ID ) ) | ( (lv_aeParams_15_0= ruleArrayElement ) ) | ( (lv_archive_16_0= ruleArchive ) ) | ( (lv_sizes_17_0= ruleSize ) ) | ( (lv_calcCRs_18_0= ruleCalcCR ) ) | ( (lv_calcMeans_19_0= ruleCalcMean ) ) ) )* otherlv_20= ')' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1102:2: ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'add' ) ) otherlv_4= '(' ( ( (lv_numParams_5_0= ruleNumber ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_aeParams_7_0= ruleArrayElement ) ) | ( (lv_archive_8_0= ruleArchive ) ) | ( (lv_sizes_9_0= ruleSize ) ) | ( (lv_calcCRs_10_0= ruleCalcCR ) ) | ( (lv_calcMeans_11_0= ruleCalcMean ) ) ) (otherlv_12= ',' ( ( (lv_numParams_13_0= ruleNumber ) ) | ( (otherlv_14= RULE_ID ) ) | ( (lv_aeParams_15_0= ruleArrayElement ) ) | ( (lv_archive_16_0= ruleArchive ) ) | ( (lv_sizes_17_0= ruleSize ) ) | ( (lv_calcCRs_18_0= ruleCalcCR ) ) | ( (lv_calcMeans_19_0= ruleCalcMean ) ) ) )* otherlv_20= ')'
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1102:2: ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) )
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==RULE_ID) ) {
                int LA16_1 = input.LA(2);

                if ( (LA16_1==37) ) {
                    alt16=2;
                }
                else if ( (LA16_1==19) ) {
                    alt16=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 16, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }
            switch (alt16) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1102:3: ( (otherlv_0= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1102:3: ( (otherlv_0= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1103:1: (otherlv_0= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1103:1: (otherlv_0= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1104:3: otherlv_0= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getAddRule());
                    	        }
                            
                    otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAdd2159); 

                    		newLeafNode(otherlv_0, grammarAccess.getAddAccess().getArrayArrayCrossReference_0_0_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1116:6: ( (lv_arrayElement_1_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1116:6: ( (lv_arrayElement_1_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1117:1: (lv_arrayElement_1_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1117:1: (lv_arrayElement_1_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1118:3: lv_arrayElement_1_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getAddAccess().getArrayElementArrayElementParserRuleCall_0_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleAdd2186);
                    lv_arrayElement_1_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAddRule());
                    	        }
                           		set(
                           			current, 
                           			"arrayElement",
                            		lv_arrayElement_1_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleAdd2199); 

                	newLeafNode(otherlv_2, grammarAccess.getAddAccess().getFullStopKeyword_1());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1138:1: ( (lv_method_3_0= 'add' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1139:1: (lv_method_3_0= 'add' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1139:1: (lv_method_3_0= 'add' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1140:3: lv_method_3_0= 'add'
            {
            lv_method_3_0=(Token)match(input,21,FOLLOW_21_in_ruleAdd2217); 

                    newLeafNode(lv_method_3_0, grammarAccess.getAddAccess().getMethodAddKeyword_2_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAddRule());
            	        }
                   		setWithLastConsumed(current, "method", lv_method_3_0, "add");
            	    

            }


            }

            otherlv_4=(Token)match(input,16,FOLLOW_16_in_ruleAdd2242); 

                	newLeafNode(otherlv_4, grammarAccess.getAddAccess().getLeftParenthesisKeyword_3());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1157:1: ( ( (lv_numParams_5_0= ruleNumber ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_aeParams_7_0= ruleArrayElement ) ) | ( (lv_archive_8_0= ruleArchive ) ) | ( (lv_sizes_9_0= ruleSize ) ) | ( (lv_calcCRs_10_0= ruleCalcCR ) ) | ( (lv_calcMeans_11_0= ruleCalcMean ) ) )
            int alt17=7;
            alt17 = dfa17.predict(input);
            switch (alt17) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1157:2: ( (lv_numParams_5_0= ruleNumber ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1157:2: ( (lv_numParams_5_0= ruleNumber ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1158:1: (lv_numParams_5_0= ruleNumber )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1158:1: (lv_numParams_5_0= ruleNumber )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1159:3: lv_numParams_5_0= ruleNumber
                    {
                     
                    	        newCompositeNode(grammarAccess.getAddAccess().getNumParamsNumberParserRuleCall_4_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleNumber_in_ruleAdd2264);
                    lv_numParams_5_0=ruleNumber();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAddRule());
                    	        }
                           		add(
                           			current, 
                           			"numParams",
                            		lv_numParams_5_0, 
                            		"Number");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1176:6: ( (otherlv_6= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1176:6: ( (otherlv_6= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1177:1: (otherlv_6= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1177:1: (otherlv_6= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1178:3: otherlv_6= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getAddRule());
                    	        }
                            
                    otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAdd2290); 

                    		newLeafNode(otherlv_6, grammarAccess.getAddAccess().getVarParamsVariableCrossReference_4_1_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1190:6: ( (lv_aeParams_7_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1190:6: ( (lv_aeParams_7_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1191:1: (lv_aeParams_7_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1191:1: (lv_aeParams_7_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1192:3: lv_aeParams_7_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getAddAccess().getAeParamsArrayElementParserRuleCall_4_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleAdd2317);
                    lv_aeParams_7_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAddRule());
                    	        }
                           		add(
                           			current, 
                           			"aeParams",
                            		lv_aeParams_7_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1209:6: ( (lv_archive_8_0= ruleArchive ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1209:6: ( (lv_archive_8_0= ruleArchive ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1210:1: (lv_archive_8_0= ruleArchive )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1210:1: (lv_archive_8_0= ruleArchive )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1211:3: lv_archive_8_0= ruleArchive
                    {
                     
                    	        newCompositeNode(grammarAccess.getAddAccess().getArchiveArchiveParserRuleCall_4_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArchive_in_ruleAdd2344);
                    lv_archive_8_0=ruleArchive();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAddRule());
                    	        }
                           		add(
                           			current, 
                           			"archive",
                            		lv_archive_8_0, 
                            		"Archive");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 5 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1228:6: ( (lv_sizes_9_0= ruleSize ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1228:6: ( (lv_sizes_9_0= ruleSize ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1229:1: (lv_sizes_9_0= ruleSize )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1229:1: (lv_sizes_9_0= ruleSize )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1230:3: lv_sizes_9_0= ruleSize
                    {
                     
                    	        newCompositeNode(grammarAccess.getAddAccess().getSizesSizeParserRuleCall_4_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleSize_in_ruleAdd2371);
                    lv_sizes_9_0=ruleSize();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAddRule());
                    	        }
                           		add(
                           			current, 
                           			"sizes",
                            		lv_sizes_9_0, 
                            		"Size");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 6 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1247:6: ( (lv_calcCRs_10_0= ruleCalcCR ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1247:6: ( (lv_calcCRs_10_0= ruleCalcCR ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1248:1: (lv_calcCRs_10_0= ruleCalcCR )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1248:1: (lv_calcCRs_10_0= ruleCalcCR )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1249:3: lv_calcCRs_10_0= ruleCalcCR
                    {
                     
                    	        newCompositeNode(grammarAccess.getAddAccess().getCalcCRsCalcCRParserRuleCall_4_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcCR_in_ruleAdd2398);
                    lv_calcCRs_10_0=ruleCalcCR();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAddRule());
                    	        }
                           		add(
                           			current, 
                           			"calcCRs",
                            		lv_calcCRs_10_0, 
                            		"CalcCR");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 7 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1266:6: ( (lv_calcMeans_11_0= ruleCalcMean ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1266:6: ( (lv_calcMeans_11_0= ruleCalcMean ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1267:1: (lv_calcMeans_11_0= ruleCalcMean )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1267:1: (lv_calcMeans_11_0= ruleCalcMean )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1268:3: lv_calcMeans_11_0= ruleCalcMean
                    {
                     
                    	        newCompositeNode(grammarAccess.getAddAccess().getCalcMeansCalcMeanParserRuleCall_4_6_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcMean_in_ruleAdd2425);
                    lv_calcMeans_11_0=ruleCalcMean();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAddRule());
                    	        }
                           		add(
                           			current, 
                           			"calcMeans",
                            		lv_calcMeans_11_0, 
                            		"CalcMean");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1284:3: (otherlv_12= ',' ( ( (lv_numParams_13_0= ruleNumber ) ) | ( (otherlv_14= RULE_ID ) ) | ( (lv_aeParams_15_0= ruleArrayElement ) ) | ( (lv_archive_16_0= ruleArchive ) ) | ( (lv_sizes_17_0= ruleSize ) ) | ( (lv_calcCRs_18_0= ruleCalcCR ) ) | ( (lv_calcMeans_19_0= ruleCalcMean ) ) ) )*
            loop19:
            do {
                int alt19=2;
                int LA19_0 = input.LA(1);

                if ( (LA19_0==12) ) {
                    alt19=1;
                }


                switch (alt19) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1284:5: otherlv_12= ',' ( ( (lv_numParams_13_0= ruleNumber ) ) | ( (otherlv_14= RULE_ID ) ) | ( (lv_aeParams_15_0= ruleArrayElement ) ) | ( (lv_archive_16_0= ruleArchive ) ) | ( (lv_sizes_17_0= ruleSize ) ) | ( (lv_calcCRs_18_0= ruleCalcCR ) ) | ( (lv_calcMeans_19_0= ruleCalcMean ) ) )
            	    {
            	    otherlv_12=(Token)match(input,12,FOLLOW_12_in_ruleAdd2439); 

            	        	newLeafNode(otherlv_12, grammarAccess.getAddAccess().getCommaKeyword_5_0());
            	        
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1288:1: ( ( (lv_numParams_13_0= ruleNumber ) ) | ( (otherlv_14= RULE_ID ) ) | ( (lv_aeParams_15_0= ruleArrayElement ) ) | ( (lv_archive_16_0= ruleArchive ) ) | ( (lv_sizes_17_0= ruleSize ) ) | ( (lv_calcCRs_18_0= ruleCalcCR ) ) | ( (lv_calcMeans_19_0= ruleCalcMean ) ) )
            	    int alt18=7;
            	    alt18 = dfa18.predict(input);
            	    switch (alt18) {
            	        case 1 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1288:2: ( (lv_numParams_13_0= ruleNumber ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1288:2: ( (lv_numParams_13_0= ruleNumber ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1289:1: (lv_numParams_13_0= ruleNumber )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1289:1: (lv_numParams_13_0= ruleNumber )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1290:3: lv_numParams_13_0= ruleNumber
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getAddAccess().getNumParamsNumberParserRuleCall_5_1_0_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleNumber_in_ruleAdd2461);
            	            lv_numParams_13_0=ruleNumber();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getAddRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"numParams",
            	                    		lv_numParams_13_0, 
            	                    		"Number");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 2 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1307:6: ( (otherlv_14= RULE_ID ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1307:6: ( (otherlv_14= RULE_ID ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1308:1: (otherlv_14= RULE_ID )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1308:1: (otherlv_14= RULE_ID )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1309:3: otherlv_14= RULE_ID
            	            {

            	            			if (current==null) {
            	            	            current = createModelElement(grammarAccess.getAddRule());
            	            	        }
            	                    
            	            otherlv_14=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAdd2487); 

            	            		newLeafNode(otherlv_14, grammarAccess.getAddAccess().getVarParamsVariableCrossReference_5_1_1_0()); 
            	            	

            	            }


            	            }


            	            }
            	            break;
            	        case 3 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1321:6: ( (lv_aeParams_15_0= ruleArrayElement ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1321:6: ( (lv_aeParams_15_0= ruleArrayElement ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1322:1: (lv_aeParams_15_0= ruleArrayElement )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1322:1: (lv_aeParams_15_0= ruleArrayElement )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1323:3: lv_aeParams_15_0= ruleArrayElement
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getAddAccess().getAeParamsArrayElementParserRuleCall_5_1_2_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleArrayElement_in_ruleAdd2514);
            	            lv_aeParams_15_0=ruleArrayElement();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getAddRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"aeParams",
            	                    		lv_aeParams_15_0, 
            	                    		"ArrayElement");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 4 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1340:6: ( (lv_archive_16_0= ruleArchive ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1340:6: ( (lv_archive_16_0= ruleArchive ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1341:1: (lv_archive_16_0= ruleArchive )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1341:1: (lv_archive_16_0= ruleArchive )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1342:3: lv_archive_16_0= ruleArchive
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getAddAccess().getArchiveArchiveParserRuleCall_5_1_3_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleArchive_in_ruleAdd2541);
            	            lv_archive_16_0=ruleArchive();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getAddRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"archive",
            	                    		lv_archive_16_0, 
            	                    		"Archive");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 5 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1359:6: ( (lv_sizes_17_0= ruleSize ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1359:6: ( (lv_sizes_17_0= ruleSize ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1360:1: (lv_sizes_17_0= ruleSize )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1360:1: (lv_sizes_17_0= ruleSize )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1361:3: lv_sizes_17_0= ruleSize
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getAddAccess().getSizesSizeParserRuleCall_5_1_4_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleSize_in_ruleAdd2568);
            	            lv_sizes_17_0=ruleSize();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getAddRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"sizes",
            	                    		lv_sizes_17_0, 
            	                    		"Size");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 6 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1378:6: ( (lv_calcCRs_18_0= ruleCalcCR ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1378:6: ( (lv_calcCRs_18_0= ruleCalcCR ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1379:1: (lv_calcCRs_18_0= ruleCalcCR )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1379:1: (lv_calcCRs_18_0= ruleCalcCR )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1380:3: lv_calcCRs_18_0= ruleCalcCR
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getAddAccess().getCalcCRsCalcCRParserRuleCall_5_1_5_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleCalcCR_in_ruleAdd2595);
            	            lv_calcCRs_18_0=ruleCalcCR();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getAddRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"calcCRs",
            	                    		lv_calcCRs_18_0, 
            	                    		"CalcCR");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 7 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1397:6: ( (lv_calcMeans_19_0= ruleCalcMean ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1397:6: ( (lv_calcMeans_19_0= ruleCalcMean ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1398:1: (lv_calcMeans_19_0= ruleCalcMean )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1398:1: (lv_calcMeans_19_0= ruleCalcMean )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1399:3: lv_calcMeans_19_0= ruleCalcMean
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getAddAccess().getCalcMeansCalcMeanParserRuleCall_5_1_6_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleCalcMean_in_ruleAdd2622);
            	            lv_calcMeans_19_0=ruleCalcMean();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getAddRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"calcMeans",
            	                    		lv_calcMeans_19_0, 
            	                    		"CalcMean");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop19;
                }
            } while (true);

            otherlv_20=(Token)match(input,17,FOLLOW_17_in_ruleAdd2637); 

                	newLeafNode(otherlv_20, grammarAccess.getAddAccess().getRightParenthesisKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAdd"


    // $ANTLR start "entryRuleDelete"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1427:1: entryRuleDelete returns [EObject current=null] : iv_ruleDelete= ruleDelete EOF ;
    public final EObject entryRuleDelete() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDelete = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1428:2: (iv_ruleDelete= ruleDelete EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1429:2: iv_ruleDelete= ruleDelete EOF
            {
             newCompositeNode(grammarAccess.getDeleteRule()); 
            pushFollow(FOLLOW_ruleDelete_in_entryRuleDelete2673);
            iv_ruleDelete=ruleDelete();

            state._fsp--;

             current =iv_ruleDelete; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDelete2683); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDelete"


    // $ANTLR start "ruleDelete"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1436:1: ruleDelete returns [EObject current=null] : ( ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'delete' ) ) otherlv_4= '(' ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) ) ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )* otherlv_14= ')' ) | ( ( ( (otherlv_15= RULE_ID ) ) | ( (lv_arrayElement_16_0= ruleArrayElement ) ) ) otherlv_17= '.' ( (lv_method_18_0= 'delete' ) ) otherlv_19= '(' ( ( (lv_indexs_20_0= ruleIndex ) ) | ( (lv_findSimilars_21_0= ruleFindSimilar ) ) | ( (lv_highestCRs_22_0= ruleHighestCR ) ) ) (otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) ) )* otherlv_27= ')' ) ) ;
    public final EObject ruleDelete() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token lv_method_3_0=null;
        Token otherlv_4=null;
        Token lv_delElements_5_0=null;
        Token otherlv_6=null;
        Token otherlv_9=null;
        Token lv_delElements_10_0=null;
        Token otherlv_11=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token otherlv_17=null;
        Token lv_method_18_0=null;
        Token otherlv_19=null;
        Token otherlv_23=null;
        Token otherlv_27=null;
        EObject lv_arrayElement_1_0 = null;

        EObject lv_delArrays_7_0 = null;

        EObject lv_size_8_0 = null;

        EObject lv_delArrays_12_0 = null;

        EObject lv_size_13_0 = null;

        EObject lv_arrayElement_16_0 = null;

        EObject lv_indexs_20_0 = null;

        EObject lv_findSimilars_21_0 = null;

        EObject lv_highestCRs_22_0 = null;

        EObject lv_indxs_24_0 = null;

        EObject lv_findSimilars_25_0 = null;

        EObject lv_highestCRs_26_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1439:28: ( ( ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'delete' ) ) otherlv_4= '(' ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) ) ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )* otherlv_14= ')' ) | ( ( ( (otherlv_15= RULE_ID ) ) | ( (lv_arrayElement_16_0= ruleArrayElement ) ) ) otherlv_17= '.' ( (lv_method_18_0= 'delete' ) ) otherlv_19= '(' ( ( (lv_indexs_20_0= ruleIndex ) ) | ( (lv_findSimilars_21_0= ruleFindSimilar ) ) | ( (lv_highestCRs_22_0= ruleHighestCR ) ) ) (otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) ) )* otherlv_27= ')' ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1440:1: ( ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'delete' ) ) otherlv_4= '(' ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) ) ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )* otherlv_14= ')' ) | ( ( ( (otherlv_15= RULE_ID ) ) | ( (lv_arrayElement_16_0= ruleArrayElement ) ) ) otherlv_17= '.' ( (lv_method_18_0= 'delete' ) ) otherlv_19= '(' ( ( (lv_indexs_20_0= ruleIndex ) ) | ( (lv_findSimilars_21_0= ruleFindSimilar ) ) | ( (lv_highestCRs_22_0= ruleHighestCR ) ) ) (otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) ) )* otherlv_27= ')' ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1440:1: ( ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'delete' ) ) otherlv_4= '(' ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) ) ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )* otherlv_14= ')' ) | ( ( ( (otherlv_15= RULE_ID ) ) | ( (lv_arrayElement_16_0= ruleArrayElement ) ) ) otherlv_17= '.' ( (lv_method_18_0= 'delete' ) ) otherlv_19= '(' ( ( (lv_indexs_20_0= ruleIndex ) ) | ( (lv_findSimilars_21_0= ruleFindSimilar ) ) | ( (lv_highestCRs_22_0= ruleHighestCR ) ) ) (otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) ) )* otherlv_27= ')' ) )
            int alt28=2;
            alt28 = dfa28.predict(input);
            switch (alt28) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1440:2: ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'delete' ) ) otherlv_4= '(' ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) ) ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )* otherlv_14= ')' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1440:2: ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'delete' ) ) otherlv_4= '(' ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) ) ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )* otherlv_14= ')' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1440:3: ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'delete' ) ) otherlv_4= '(' ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) ) ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )* otherlv_14= ')'
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1440:3: ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) )
                    int alt20=2;
                    int LA20_0 = input.LA(1);

                    if ( (LA20_0==RULE_ID) ) {
                        int LA20_1 = input.LA(2);

                        if ( (LA20_1==19) ) {
                            alt20=1;
                        }
                        else if ( (LA20_1==37) ) {
                            alt20=2;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 20, 1, input);

                            throw nvae;
                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 20, 0, input);

                        throw nvae;
                    }
                    switch (alt20) {
                        case 1 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1440:4: ( (otherlv_0= RULE_ID ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1440:4: ( (otherlv_0= RULE_ID ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1441:1: (otherlv_0= RULE_ID )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1441:1: (otherlv_0= RULE_ID )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1442:3: otherlv_0= RULE_ID
                            {

                            			if (current==null) {
                            	            current = createModelElement(grammarAccess.getDeleteRule());
                            	        }
                                    
                            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDelete2730); 

                            		newLeafNode(otherlv_0, grammarAccess.getDeleteAccess().getArrayArrayCrossReference_0_0_0_0()); 
                            	

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1454:6: ( (lv_arrayElement_1_0= ruleArrayElement ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1454:6: ( (lv_arrayElement_1_0= ruleArrayElement ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1455:1: (lv_arrayElement_1_0= ruleArrayElement )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1455:1: (lv_arrayElement_1_0= ruleArrayElement )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1456:3: lv_arrayElement_1_0= ruleArrayElement
                            {
                             
                            	        newCompositeNode(grammarAccess.getDeleteAccess().getArrayElementArrayElementParserRuleCall_0_0_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleArrayElement_in_ruleDelete2757);
                            lv_arrayElement_1_0=ruleArrayElement();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"arrayElement",
                                    		lv_arrayElement_1_0, 
                                    		"ArrayElement");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }

                    otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleDelete2770); 

                        	newLeafNode(otherlv_2, grammarAccess.getDeleteAccess().getFullStopKeyword_0_1());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1476:1: ( (lv_method_3_0= 'delete' ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1477:1: (lv_method_3_0= 'delete' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1477:1: (lv_method_3_0= 'delete' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1478:3: lv_method_3_0= 'delete'
                    {
                    lv_method_3_0=(Token)match(input,22,FOLLOW_22_in_ruleDelete2788); 

                            newLeafNode(lv_method_3_0, grammarAccess.getDeleteAccess().getMethodDeleteKeyword_0_2_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDeleteRule());
                    	        }
                           		setWithLastConsumed(current, "method", lv_method_3_0, "delete");
                    	    

                    }


                    }

                    otherlv_4=(Token)match(input,16,FOLLOW_16_in_ruleDelete2813); 

                        	newLeafNode(otherlv_4, grammarAccess.getDeleteAccess().getLeftParenthesisKeyword_0_3());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1495:1: ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) )
                    int alt21=4;
                    alt21 = dfa21.predict(input);
                    switch (alt21) {
                        case 1 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1495:2: ( (lv_delElements_5_0= RULE_INT ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1495:2: ( (lv_delElements_5_0= RULE_INT ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1496:1: (lv_delElements_5_0= RULE_INT )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1496:1: (lv_delElements_5_0= RULE_INT )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1497:3: lv_delElements_5_0= RULE_INT
                            {
                            lv_delElements_5_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDelete2831); 

                            			newLeafNode(lv_delElements_5_0, grammarAccess.getDeleteAccess().getDelElementsINTTerminalRuleCall_0_4_0_0()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getDeleteRule());
                            	        }
                                   		addWithLastConsumed(
                                   			current, 
                                   			"delElements",
                                    		lv_delElements_5_0, 
                                    		"INT");
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1514:6: ( (otherlv_6= RULE_ID ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1514:6: ( (otherlv_6= RULE_ID ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1515:1: (otherlv_6= RULE_ID )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1515:1: (otherlv_6= RULE_ID )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1516:3: otherlv_6= RULE_ID
                            {

                            			if (current==null) {
                            	            current = createModelElement(grammarAccess.getDeleteRule());
                            	        }
                                    
                            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDelete2862); 

                            		newLeafNode(otherlv_6, grammarAccess.getDeleteAccess().getDelVarsSimpleVariableCrossReference_0_4_1_0()); 
                            	

                            }


                            }


                            }
                            break;
                        case 3 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1528:6: ( (lv_delArrays_7_0= ruleArrayElement ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1528:6: ( (lv_delArrays_7_0= ruleArrayElement ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1529:1: (lv_delArrays_7_0= ruleArrayElement )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1529:1: (lv_delArrays_7_0= ruleArrayElement )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1530:3: lv_delArrays_7_0= ruleArrayElement
                            {
                             
                            	        newCompositeNode(grammarAccess.getDeleteAccess().getDelArraysArrayElementParserRuleCall_0_4_2_0()); 
                            	    
                            pushFollow(FOLLOW_ruleArrayElement_in_ruleDelete2889);
                            lv_delArrays_7_0=ruleArrayElement();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"delArrays",
                                    		lv_delArrays_7_0, 
                                    		"ArrayElement");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 4 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1547:6: ( (lv_size_8_0= ruleSize ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1547:6: ( (lv_size_8_0= ruleSize ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1548:1: (lv_size_8_0= ruleSize )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1548:1: (lv_size_8_0= ruleSize )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1549:3: lv_size_8_0= ruleSize
                            {
                             
                            	        newCompositeNode(grammarAccess.getDeleteAccess().getSizeSizeParserRuleCall_0_4_3_0()); 
                            	    
                            pushFollow(FOLLOW_ruleSize_in_ruleDelete2916);
                            lv_size_8_0=ruleSize();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"size",
                                    		lv_size_8_0, 
                                    		"Size");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }

                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1565:3: ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )*
                    loop23:
                    do {
                        int alt23=4;
                        alt23 = dfa23.predict(input);
                        switch (alt23) {
                    	case 1 :
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1565:4: (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) )
                    	    {
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1565:4: (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) )
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1565:6: otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) )
                    	    {
                    	    otherlv_9=(Token)match(input,12,FOLLOW_12_in_ruleDelete2931); 

                    	        	newLeafNode(otherlv_9, grammarAccess.getDeleteAccess().getCommaKeyword_0_5_0_0());
                    	        
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1569:1: ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) )
                    	    int alt22=2;
                    	    int LA22_0 = input.LA(1);

                    	    if ( (LA22_0==RULE_INT) ) {
                    	        alt22=1;
                    	    }
                    	    else if ( (LA22_0==RULE_ID) ) {
                    	        alt22=2;
                    	    }
                    	    else {
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 22, 0, input);

                    	        throw nvae;
                    	    }
                    	    switch (alt22) {
                    	        case 1 :
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1569:2: ( (lv_delElements_10_0= RULE_INT ) )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1569:2: ( (lv_delElements_10_0= RULE_INT ) )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1570:1: (lv_delElements_10_0= RULE_INT )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1570:1: (lv_delElements_10_0= RULE_INT )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1571:3: lv_delElements_10_0= RULE_INT
                    	            {
                    	            lv_delElements_10_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleDelete2949); 

                    	            			newLeafNode(lv_delElements_10_0, grammarAccess.getDeleteAccess().getDelElementsINTTerminalRuleCall_0_5_0_1_0_0()); 
                    	            		

                    	            	        if (current==null) {
                    	            	            current = createModelElement(grammarAccess.getDeleteRule());
                    	            	        }
                    	                   		addWithLastConsumed(
                    	                   			current, 
                    	                   			"delElements",
                    	                    		lv_delElements_10_0, 
                    	                    		"INT");
                    	            	    

                    	            }


                    	            }


                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1588:6: ( (otherlv_11= RULE_ID ) )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1588:6: ( (otherlv_11= RULE_ID ) )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1589:1: (otherlv_11= RULE_ID )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1589:1: (otherlv_11= RULE_ID )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1590:3: otherlv_11= RULE_ID
                    	            {

                    	            			if (current==null) {
                    	            	            current = createModelElement(grammarAccess.getDeleteRule());
                    	            	        }
                    	                    
                    	            otherlv_11=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDelete2980); 

                    	            		newLeafNode(otherlv_11, grammarAccess.getDeleteAccess().getDelVarsSimpleVariableCrossReference_0_5_0_1_1_0()); 
                    	            	

                    	            }


                    	            }


                    	            }
                    	            break;

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 2 :
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1602:6: ( (lv_delArrays_12_0= ruleArrayElement ) )
                    	    {
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1602:6: ( (lv_delArrays_12_0= ruleArrayElement ) )
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1603:1: (lv_delArrays_12_0= ruleArrayElement )
                    	    {
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1603:1: (lv_delArrays_12_0= ruleArrayElement )
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1604:3: lv_delArrays_12_0= ruleArrayElement
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getDeleteAccess().getDelArraysArrayElementParserRuleCall_0_5_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleArrayElement_in_ruleDelete3009);
                    	    lv_delArrays_12_0=ruleArrayElement();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"delArrays",
                    	            		lv_delArrays_12_0, 
                    	            		"ArrayElement");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;
                    	case 3 :
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1621:6: ( (lv_size_13_0= ruleSize ) )
                    	    {
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1621:6: ( (lv_size_13_0= ruleSize ) )
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1622:1: (lv_size_13_0= ruleSize )
                    	    {
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1622:1: (lv_size_13_0= ruleSize )
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1623:3: lv_size_13_0= ruleSize
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getDeleteAccess().getSizeSizeParserRuleCall_0_5_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleSize_in_ruleDelete3036);
                    	    lv_size_13_0=ruleSize();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"size",
                    	            		lv_size_13_0, 
                    	            		"Size");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop23;
                        }
                    } while (true);

                    otherlv_14=(Token)match(input,17,FOLLOW_17_in_ruleDelete3050); 

                        	newLeafNode(otherlv_14, grammarAccess.getDeleteAccess().getRightParenthesisKeyword_0_6());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1644:6: ( ( ( (otherlv_15= RULE_ID ) ) | ( (lv_arrayElement_16_0= ruleArrayElement ) ) ) otherlv_17= '.' ( (lv_method_18_0= 'delete' ) ) otherlv_19= '(' ( ( (lv_indexs_20_0= ruleIndex ) ) | ( (lv_findSimilars_21_0= ruleFindSimilar ) ) | ( (lv_highestCRs_22_0= ruleHighestCR ) ) ) (otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) ) )* otherlv_27= ')' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1644:6: ( ( ( (otherlv_15= RULE_ID ) ) | ( (lv_arrayElement_16_0= ruleArrayElement ) ) ) otherlv_17= '.' ( (lv_method_18_0= 'delete' ) ) otherlv_19= '(' ( ( (lv_indexs_20_0= ruleIndex ) ) | ( (lv_findSimilars_21_0= ruleFindSimilar ) ) | ( (lv_highestCRs_22_0= ruleHighestCR ) ) ) (otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) ) )* otherlv_27= ')' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1644:7: ( ( (otherlv_15= RULE_ID ) ) | ( (lv_arrayElement_16_0= ruleArrayElement ) ) ) otherlv_17= '.' ( (lv_method_18_0= 'delete' ) ) otherlv_19= '(' ( ( (lv_indexs_20_0= ruleIndex ) ) | ( (lv_findSimilars_21_0= ruleFindSimilar ) ) | ( (lv_highestCRs_22_0= ruleHighestCR ) ) ) (otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) ) )* otherlv_27= ')'
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1644:7: ( ( (otherlv_15= RULE_ID ) ) | ( (lv_arrayElement_16_0= ruleArrayElement ) ) )
                    int alt24=2;
                    int LA24_0 = input.LA(1);

                    if ( (LA24_0==RULE_ID) ) {
                        int LA24_1 = input.LA(2);

                        if ( (LA24_1==37) ) {
                            alt24=2;
                        }
                        else if ( (LA24_1==19) ) {
                            alt24=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 24, 1, input);

                            throw nvae;
                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 24, 0, input);

                        throw nvae;
                    }
                    switch (alt24) {
                        case 1 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1644:8: ( (otherlv_15= RULE_ID ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1644:8: ( (otherlv_15= RULE_ID ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1645:1: (otherlv_15= RULE_ID )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1645:1: (otherlv_15= RULE_ID )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1646:3: otherlv_15= RULE_ID
                            {

                            			if (current==null) {
                            	            current = createModelElement(grammarAccess.getDeleteRule());
                            	        }
                                    
                            otherlv_15=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDelete3079); 

                            		newLeafNode(otherlv_15, grammarAccess.getDeleteAccess().getArrayArrayCrossReference_1_0_0_0()); 
                            	

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1658:6: ( (lv_arrayElement_16_0= ruleArrayElement ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1658:6: ( (lv_arrayElement_16_0= ruleArrayElement ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1659:1: (lv_arrayElement_16_0= ruleArrayElement )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1659:1: (lv_arrayElement_16_0= ruleArrayElement )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1660:3: lv_arrayElement_16_0= ruleArrayElement
                            {
                             
                            	        newCompositeNode(grammarAccess.getDeleteAccess().getArrayElementArrayElementParserRuleCall_1_0_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleArrayElement_in_ruleDelete3106);
                            lv_arrayElement_16_0=ruleArrayElement();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"arrayElement",
                                    		lv_arrayElement_16_0, 
                                    		"ArrayElement");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }

                    otherlv_17=(Token)match(input,19,FOLLOW_19_in_ruleDelete3119); 

                        	newLeafNode(otherlv_17, grammarAccess.getDeleteAccess().getFullStopKeyword_1_1());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1680:1: ( (lv_method_18_0= 'delete' ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1681:1: (lv_method_18_0= 'delete' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1681:1: (lv_method_18_0= 'delete' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1682:3: lv_method_18_0= 'delete'
                    {
                    lv_method_18_0=(Token)match(input,22,FOLLOW_22_in_ruleDelete3137); 

                            newLeafNode(lv_method_18_0, grammarAccess.getDeleteAccess().getMethodDeleteKeyword_1_2_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDeleteRule());
                    	        }
                           		setWithLastConsumed(current, "method", lv_method_18_0, "delete");
                    	    

                    }


                    }

                    otherlv_19=(Token)match(input,16,FOLLOW_16_in_ruleDelete3162); 

                        	newLeafNode(otherlv_19, grammarAccess.getDeleteAccess().getLeftParenthesisKeyword_1_3());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1699:1: ( ( (lv_indexs_20_0= ruleIndex ) ) | ( (lv_findSimilars_21_0= ruleFindSimilar ) ) | ( (lv_highestCRs_22_0= ruleHighestCR ) ) )
                    int alt25=3;
                    switch ( input.LA(1) ) {
                    case 37:
                        {
                        alt25=1;
                        }
                        break;
                    case 33:
                        {
                        alt25=2;
                        }
                        break;
                    case 32:
                        {
                        alt25=3;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 25, 0, input);

                        throw nvae;
                    }

                    switch (alt25) {
                        case 1 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1699:2: ( (lv_indexs_20_0= ruleIndex ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1699:2: ( (lv_indexs_20_0= ruleIndex ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1700:1: (lv_indexs_20_0= ruleIndex )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1700:1: (lv_indexs_20_0= ruleIndex )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1701:3: lv_indexs_20_0= ruleIndex
                            {
                             
                            	        newCompositeNode(grammarAccess.getDeleteAccess().getIndexsIndexParserRuleCall_1_4_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleIndex_in_ruleDelete3184);
                            lv_indexs_20_0=ruleIndex();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"indexs",
                                    		lv_indexs_20_0, 
                                    		"Index");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1718:6: ( (lv_findSimilars_21_0= ruleFindSimilar ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1718:6: ( (lv_findSimilars_21_0= ruleFindSimilar ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1719:1: (lv_findSimilars_21_0= ruleFindSimilar )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1719:1: (lv_findSimilars_21_0= ruleFindSimilar )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1720:3: lv_findSimilars_21_0= ruleFindSimilar
                            {
                             
                            	        newCompositeNode(grammarAccess.getDeleteAccess().getFindSimilarsFindSimilarParserRuleCall_1_4_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleFindSimilar_in_ruleDelete3211);
                            lv_findSimilars_21_0=ruleFindSimilar();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"findSimilars",
                                    		lv_findSimilars_21_0, 
                                    		"FindSimilar");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 3 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1737:6: ( (lv_highestCRs_22_0= ruleHighestCR ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1737:6: ( (lv_highestCRs_22_0= ruleHighestCR ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1738:1: (lv_highestCRs_22_0= ruleHighestCR )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1738:1: (lv_highestCRs_22_0= ruleHighestCR )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1739:3: lv_highestCRs_22_0= ruleHighestCR
                            {
                             
                            	        newCompositeNode(grammarAccess.getDeleteAccess().getHighestCRsHighestCRParserRuleCall_1_4_2_0()); 
                            	    
                            pushFollow(FOLLOW_ruleHighestCR_in_ruleDelete3238);
                            lv_highestCRs_22_0=ruleHighestCR();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"highestCRs",
                                    		lv_highestCRs_22_0, 
                                    		"HighestCR");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }

                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1755:3: (otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) ) )*
                    loop27:
                    do {
                        int alt27=2;
                        int LA27_0 = input.LA(1);

                        if ( (LA27_0==12) ) {
                            alt27=1;
                        }


                        switch (alt27) {
                    	case 1 :
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1755:5: otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) )
                    	    {
                    	    otherlv_23=(Token)match(input,12,FOLLOW_12_in_ruleDelete3252); 

                    	        	newLeafNode(otherlv_23, grammarAccess.getDeleteAccess().getCommaKeyword_1_5_0());
                    	        
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1759:1: ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) )
                    	    int alt26=3;
                    	    switch ( input.LA(1) ) {
                    	    case 37:
                    	        {
                    	        alt26=1;
                    	        }
                    	        break;
                    	    case 33:
                    	        {
                    	        alt26=2;
                    	        }
                    	        break;
                    	    case 32:
                    	        {
                    	        alt26=3;
                    	        }
                    	        break;
                    	    default:
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 26, 0, input);

                    	        throw nvae;
                    	    }

                    	    switch (alt26) {
                    	        case 1 :
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1759:2: ( (lv_indxs_24_0= ruleIndex ) )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1759:2: ( (lv_indxs_24_0= ruleIndex ) )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1760:1: (lv_indxs_24_0= ruleIndex )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1760:1: (lv_indxs_24_0= ruleIndex )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1761:3: lv_indxs_24_0= ruleIndex
                    	            {
                    	             
                    	            	        newCompositeNode(grammarAccess.getDeleteAccess().getIndxsIndexParserRuleCall_1_5_1_0_0()); 
                    	            	    
                    	            pushFollow(FOLLOW_ruleIndex_in_ruleDelete3274);
                    	            lv_indxs_24_0=ruleIndex();

                    	            state._fsp--;


                    	            	        if (current==null) {
                    	            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                    	            	        }
                    	                   		add(
                    	                   			current, 
                    	                   			"indxs",
                    	                    		lv_indxs_24_0, 
                    	                    		"Index");
                    	            	        afterParserOrEnumRuleCall();
                    	            	    

                    	            }


                    	            }


                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1778:6: ( (lv_findSimilars_25_0= ruleFindSimilar ) )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1778:6: ( (lv_findSimilars_25_0= ruleFindSimilar ) )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1779:1: (lv_findSimilars_25_0= ruleFindSimilar )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1779:1: (lv_findSimilars_25_0= ruleFindSimilar )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1780:3: lv_findSimilars_25_0= ruleFindSimilar
                    	            {
                    	             
                    	            	        newCompositeNode(grammarAccess.getDeleteAccess().getFindSimilarsFindSimilarParserRuleCall_1_5_1_1_0()); 
                    	            	    
                    	            pushFollow(FOLLOW_ruleFindSimilar_in_ruleDelete3301);
                    	            lv_findSimilars_25_0=ruleFindSimilar();

                    	            state._fsp--;


                    	            	        if (current==null) {
                    	            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                    	            	        }
                    	                   		add(
                    	                   			current, 
                    	                   			"findSimilars",
                    	                    		lv_findSimilars_25_0, 
                    	                    		"FindSimilar");
                    	            	        afterParserOrEnumRuleCall();
                    	            	    

                    	            }


                    	            }


                    	            }
                    	            break;
                    	        case 3 :
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1797:6: ( (lv_highestCRs_26_0= ruleHighestCR ) )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1797:6: ( (lv_highestCRs_26_0= ruleHighestCR ) )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1798:1: (lv_highestCRs_26_0= ruleHighestCR )
                    	            {
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1798:1: (lv_highestCRs_26_0= ruleHighestCR )
                    	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1799:3: lv_highestCRs_26_0= ruleHighestCR
                    	            {
                    	             
                    	            	        newCompositeNode(grammarAccess.getDeleteAccess().getHighestCRsHighestCRParserRuleCall_1_5_1_2_0()); 
                    	            	    
                    	            pushFollow(FOLLOW_ruleHighestCR_in_ruleDelete3328);
                    	            lv_highestCRs_26_0=ruleHighestCR();

                    	            state._fsp--;


                    	            	        if (current==null) {
                    	            	            current = createModelElementForParent(grammarAccess.getDeleteRule());
                    	            	        }
                    	                   		add(
                    	                   			current, 
                    	                   			"highestCRs",
                    	                    		lv_highestCRs_26_0, 
                    	                    		"HighestCR");
                    	            	        afterParserOrEnumRuleCall();
                    	            	    

                    	            }


                    	            }


                    	            }
                    	            break;

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop27;
                        }
                    } while (true);

                    otherlv_27=(Token)match(input,17,FOLLOW_17_in_ruleDelete3343); 

                        	newLeafNode(otherlv_27, grammarAccess.getDeleteAccess().getRightParenthesisKeyword_1_6());
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDelete"


    // $ANTLR start "entryRuleFunction"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1827:1: entryRuleFunction returns [EObject current=null] : iv_ruleFunction= ruleFunction EOF ;
    public final EObject entryRuleFunction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFunction = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1828:2: (iv_ruleFunction= ruleFunction EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1829:2: iv_ruleFunction= ruleFunction EOF
            {
             newCompositeNode(grammarAccess.getFunctionRule()); 
            pushFollow(FOLLOW_ruleFunction_in_entryRuleFunction3380);
            iv_ruleFunction=ruleFunction();

            state._fsp--;

             current =iv_ruleFunction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunction3390); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFunction"


    // $ANTLR start "ruleFunction"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1836:1: ruleFunction returns [EObject current=null] : ( ( (lv_standardFunction_0_0= ruleStandardFunction ) ) | ( (lv_crFunction_1_0= ruleCRFunction ) ) ) ;
    public final EObject ruleFunction() throws RecognitionException {
        EObject current = null;

        EObject lv_standardFunction_0_0 = null;

        EObject lv_crFunction_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1839:28: ( ( ( (lv_standardFunction_0_0= ruleStandardFunction ) ) | ( (lv_crFunction_1_0= ruleCRFunction ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1840:1: ( ( (lv_standardFunction_0_0= ruleStandardFunction ) ) | ( (lv_crFunction_1_0= ruleCRFunction ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1840:1: ( ( (lv_standardFunction_0_0= ruleStandardFunction ) ) | ( (lv_crFunction_1_0= ruleCRFunction ) ) )
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( ((LA29_0>=23 && LA29_0<=24)||LA29_0==29) ) {
                alt29=1;
            }
            else if ( ((LA29_0>=30 && LA29_0<=33)) ) {
                alt29=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 29, 0, input);

                throw nvae;
            }
            switch (alt29) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1840:2: ( (lv_standardFunction_0_0= ruleStandardFunction ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1840:2: ( (lv_standardFunction_0_0= ruleStandardFunction ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1841:1: (lv_standardFunction_0_0= ruleStandardFunction )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1841:1: (lv_standardFunction_0_0= ruleStandardFunction )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1842:3: lv_standardFunction_0_0= ruleStandardFunction
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunctionAccess().getStandardFunctionStandardFunctionParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleStandardFunction_in_ruleFunction3436);
                    lv_standardFunction_0_0=ruleStandardFunction();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"standardFunction",
                            		lv_standardFunction_0_0, 
                            		"StandardFunction");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1859:6: ( (lv_crFunction_1_0= ruleCRFunction ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1859:6: ( (lv_crFunction_1_0= ruleCRFunction ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1860:1: (lv_crFunction_1_0= ruleCRFunction )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1860:1: (lv_crFunction_1_0= ruleCRFunction )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1861:3: lv_crFunction_1_0= ruleCRFunction
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunctionAccess().getCrFunctionCRFunctionParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCRFunction_in_ruleFunction3463);
                    lv_crFunction_1_0=ruleCRFunction();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"crFunction",
                            		lv_crFunction_1_0, 
                            		"CRFunction");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFunction"


    // $ANTLR start "entryRuleStandardFunction"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1885:1: entryRuleStandardFunction returns [EObject current=null] : iv_ruleStandardFunction= ruleStandardFunction EOF ;
    public final EObject entryRuleStandardFunction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStandardFunction = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1886:2: (iv_ruleStandardFunction= ruleStandardFunction EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1887:2: iv_ruleStandardFunction= ruleStandardFunction EOF
            {
             newCompositeNode(grammarAccess.getStandardFunctionRule()); 
            pushFollow(FOLLOW_ruleStandardFunction_in_entryRuleStandardFunction3499);
            iv_ruleStandardFunction=ruleStandardFunction();

            state._fsp--;

             current =iv_ruleStandardFunction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStandardFunction3509); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStandardFunction"


    // $ANTLR start "ruleStandardFunction"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1894:1: ruleStandardFunction returns [EObject current=null] : ( ( (lv_print_0_0= rulePrint ) ) | ( (lv_for_1_0= ruleFor ) ) | ( (lv_forall_2_0= ruleForall ) ) ) ;
    public final EObject ruleStandardFunction() throws RecognitionException {
        EObject current = null;

        EObject lv_print_0_0 = null;

        EObject lv_for_1_0 = null;

        EObject lv_forall_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1897:28: ( ( ( (lv_print_0_0= rulePrint ) ) | ( (lv_for_1_0= ruleFor ) ) | ( (lv_forall_2_0= ruleForall ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1898:1: ( ( (lv_print_0_0= rulePrint ) ) | ( (lv_for_1_0= ruleFor ) ) | ( (lv_forall_2_0= ruleForall ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1898:1: ( ( (lv_print_0_0= rulePrint ) ) | ( (lv_for_1_0= ruleFor ) ) | ( (lv_forall_2_0= ruleForall ) ) )
            int alt30=3;
            switch ( input.LA(1) ) {
            case 23:
                {
                alt30=1;
                }
                break;
            case 24:
                {
                alt30=2;
                }
                break;
            case 29:
                {
                alt30=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 30, 0, input);

                throw nvae;
            }

            switch (alt30) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1898:2: ( (lv_print_0_0= rulePrint ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1898:2: ( (lv_print_0_0= rulePrint ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1899:1: (lv_print_0_0= rulePrint )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1899:1: (lv_print_0_0= rulePrint )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1900:3: lv_print_0_0= rulePrint
                    {
                     
                    	        newCompositeNode(grammarAccess.getStandardFunctionAccess().getPrintPrintParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_rulePrint_in_ruleStandardFunction3555);
                    lv_print_0_0=rulePrint();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStandardFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"print",
                            		lv_print_0_0, 
                            		"Print");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1917:6: ( (lv_for_1_0= ruleFor ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1917:6: ( (lv_for_1_0= ruleFor ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1918:1: (lv_for_1_0= ruleFor )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1918:1: (lv_for_1_0= ruleFor )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1919:3: lv_for_1_0= ruleFor
                    {
                     
                    	        newCompositeNode(grammarAccess.getStandardFunctionAccess().getForForParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFor_in_ruleStandardFunction3582);
                    lv_for_1_0=ruleFor();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStandardFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"for",
                            		lv_for_1_0, 
                            		"For");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1936:6: ( (lv_forall_2_0= ruleForall ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1936:6: ( (lv_forall_2_0= ruleForall ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1937:1: (lv_forall_2_0= ruleForall )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1937:1: (lv_forall_2_0= ruleForall )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1938:3: lv_forall_2_0= ruleForall
                    {
                     
                    	        newCompositeNode(grammarAccess.getStandardFunctionAccess().getForallForallParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleForall_in_ruleStandardFunction3609);
                    lv_forall_2_0=ruleForall();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStandardFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"forall",
                            		lv_forall_2_0, 
                            		"Forall");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStandardFunction"


    // $ANTLR start "entryRulePrint"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1962:1: entryRulePrint returns [EObject current=null] : iv_rulePrint= rulePrint EOF ;
    public final EObject entryRulePrint() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePrint = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1963:2: (iv_rulePrint= rulePrint EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1964:2: iv_rulePrint= rulePrint EOF
            {
             newCompositeNode(grammarAccess.getPrintRule()); 
            pushFollow(FOLLOW_rulePrint_in_entryRulePrint3645);
            iv_rulePrint=rulePrint();

            state._fsp--;

             current =iv_rulePrint; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePrint3655); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePrint"


    // $ANTLR start "rulePrint"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1971:1: rulePrint returns [EObject current=null] : ( ( (lv_function_0_0= 'print' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_msg_3_0= RULE_STRING ) ) | ( (lv_aeParam_4_0= ruleArrayElement ) ) ) (otherlv_5= ',' ( ( (otherlv_6= RULE_ID ) ) | ( (lv_msg_7_0= RULE_STRING ) ) | ( (lv_aeParam_8_0= ruleArrayElement ) ) ) )* otherlv_9= ')' ) ;
    public final EObject rulePrint() throws RecognitionException {
        EObject current = null;

        Token lv_function_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_msg_3_0=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token lv_msg_7_0=null;
        Token otherlv_9=null;
        EObject lv_aeParam_4_0 = null;

        EObject lv_aeParam_8_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1974:28: ( ( ( (lv_function_0_0= 'print' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_msg_3_0= RULE_STRING ) ) | ( (lv_aeParam_4_0= ruleArrayElement ) ) ) (otherlv_5= ',' ( ( (otherlv_6= RULE_ID ) ) | ( (lv_msg_7_0= RULE_STRING ) ) | ( (lv_aeParam_8_0= ruleArrayElement ) ) ) )* otherlv_9= ')' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1975:1: ( ( (lv_function_0_0= 'print' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_msg_3_0= RULE_STRING ) ) | ( (lv_aeParam_4_0= ruleArrayElement ) ) ) (otherlv_5= ',' ( ( (otherlv_6= RULE_ID ) ) | ( (lv_msg_7_0= RULE_STRING ) ) | ( (lv_aeParam_8_0= ruleArrayElement ) ) ) )* otherlv_9= ')' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1975:1: ( ( (lv_function_0_0= 'print' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_msg_3_0= RULE_STRING ) ) | ( (lv_aeParam_4_0= ruleArrayElement ) ) ) (otherlv_5= ',' ( ( (otherlv_6= RULE_ID ) ) | ( (lv_msg_7_0= RULE_STRING ) ) | ( (lv_aeParam_8_0= ruleArrayElement ) ) ) )* otherlv_9= ')' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1975:2: ( (lv_function_0_0= 'print' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_msg_3_0= RULE_STRING ) ) | ( (lv_aeParam_4_0= ruleArrayElement ) ) ) (otherlv_5= ',' ( ( (otherlv_6= RULE_ID ) ) | ( (lv_msg_7_0= RULE_STRING ) ) | ( (lv_aeParam_8_0= ruleArrayElement ) ) ) )* otherlv_9= ')'
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1975:2: ( (lv_function_0_0= 'print' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1976:1: (lv_function_0_0= 'print' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1976:1: (lv_function_0_0= 'print' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1977:3: lv_function_0_0= 'print'
            {
            lv_function_0_0=(Token)match(input,23,FOLLOW_23_in_rulePrint3698); 

                    newLeafNode(lv_function_0_0, grammarAccess.getPrintAccess().getFunctionPrintKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPrintRule());
            	        }
                   		setWithLastConsumed(current, "function", lv_function_0_0, "print");
            	    

            }


            }

            otherlv_1=(Token)match(input,16,FOLLOW_16_in_rulePrint3723); 

                	newLeafNode(otherlv_1, grammarAccess.getPrintAccess().getLeftParenthesisKeyword_1());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1994:1: ( ( (otherlv_2= RULE_ID ) ) | ( (lv_msg_3_0= RULE_STRING ) ) | ( (lv_aeParam_4_0= ruleArrayElement ) ) )
            int alt31=3;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==RULE_ID) ) {
                int LA31_1 = input.LA(2);

                if ( (LA31_1==37) ) {
                    alt31=3;
                }
                else if ( (LA31_1==12||LA31_1==17) ) {
                    alt31=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 31, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA31_0==RULE_STRING) ) {
                alt31=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 31, 0, input);

                throw nvae;
            }
            switch (alt31) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1994:2: ( (otherlv_2= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1994:2: ( (otherlv_2= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1995:1: (otherlv_2= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1995:1: (otherlv_2= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:1996:3: otherlv_2= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getPrintRule());
                    	        }
                            
                    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePrint3744); 

                    		newLeafNode(otherlv_2, grammarAccess.getPrintAccess().getVarVariableCrossReference_2_0_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2008:6: ( (lv_msg_3_0= RULE_STRING ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2008:6: ( (lv_msg_3_0= RULE_STRING ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2009:1: (lv_msg_3_0= RULE_STRING )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2009:1: (lv_msg_3_0= RULE_STRING )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2010:3: lv_msg_3_0= RULE_STRING
                    {
                    lv_msg_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePrint3767); 

                    			newLeafNode(lv_msg_3_0, grammarAccess.getPrintAccess().getMsgSTRINGTerminalRuleCall_2_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getPrintRule());
                    	        }
                           		addWithLastConsumed(
                           			current, 
                           			"msg",
                            		lv_msg_3_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2027:6: ( (lv_aeParam_4_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2027:6: ( (lv_aeParam_4_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2028:1: (lv_aeParam_4_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2028:1: (lv_aeParam_4_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2029:3: lv_aeParam_4_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getPrintAccess().getAeParamArrayElementParserRuleCall_2_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_rulePrint3799);
                    lv_aeParam_4_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getPrintRule());
                    	        }
                           		add(
                           			current, 
                           			"aeParam",
                            		lv_aeParam_4_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2045:3: (otherlv_5= ',' ( ( (otherlv_6= RULE_ID ) ) | ( (lv_msg_7_0= RULE_STRING ) ) | ( (lv_aeParam_8_0= ruleArrayElement ) ) ) )*
            loop33:
            do {
                int alt33=2;
                int LA33_0 = input.LA(1);

                if ( (LA33_0==12) ) {
                    alt33=1;
                }


                switch (alt33) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2045:5: otherlv_5= ',' ( ( (otherlv_6= RULE_ID ) ) | ( (lv_msg_7_0= RULE_STRING ) ) | ( (lv_aeParam_8_0= ruleArrayElement ) ) )
            	    {
            	    otherlv_5=(Token)match(input,12,FOLLOW_12_in_rulePrint3813); 

            	        	newLeafNode(otherlv_5, grammarAccess.getPrintAccess().getCommaKeyword_3_0());
            	        
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2049:1: ( ( (otherlv_6= RULE_ID ) ) | ( (lv_msg_7_0= RULE_STRING ) ) | ( (lv_aeParam_8_0= ruleArrayElement ) ) )
            	    int alt32=3;
            	    int LA32_0 = input.LA(1);

            	    if ( (LA32_0==RULE_ID) ) {
            	        int LA32_1 = input.LA(2);

            	        if ( (LA32_1==12||LA32_1==17) ) {
            	            alt32=1;
            	        }
            	        else if ( (LA32_1==37) ) {
            	            alt32=3;
            	        }
            	        else {
            	            NoViableAltException nvae =
            	                new NoViableAltException("", 32, 1, input);

            	            throw nvae;
            	        }
            	    }
            	    else if ( (LA32_0==RULE_STRING) ) {
            	        alt32=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 32, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt32) {
            	        case 1 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2049:2: ( (otherlv_6= RULE_ID ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2049:2: ( (otherlv_6= RULE_ID ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2050:1: (otherlv_6= RULE_ID )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2050:1: (otherlv_6= RULE_ID )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2051:3: otherlv_6= RULE_ID
            	            {

            	            			if (current==null) {
            	            	            current = createModelElement(grammarAccess.getPrintRule());
            	            	        }
            	                    
            	            otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePrint3834); 

            	            		newLeafNode(otherlv_6, grammarAccess.getPrintAccess().getVarVariableCrossReference_3_1_0_0()); 
            	            	

            	            }


            	            }


            	            }
            	            break;
            	        case 2 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2063:6: ( (lv_msg_7_0= RULE_STRING ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2063:6: ( (lv_msg_7_0= RULE_STRING ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2064:1: (lv_msg_7_0= RULE_STRING )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2064:1: (lv_msg_7_0= RULE_STRING )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2065:3: lv_msg_7_0= RULE_STRING
            	            {
            	            lv_msg_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePrint3857); 

            	            			newLeafNode(lv_msg_7_0, grammarAccess.getPrintAccess().getMsgSTRINGTerminalRuleCall_3_1_1_0()); 
            	            		

            	            	        if (current==null) {
            	            	            current = createModelElement(grammarAccess.getPrintRule());
            	            	        }
            	                   		addWithLastConsumed(
            	                   			current, 
            	                   			"msg",
            	                    		lv_msg_7_0, 
            	                    		"STRING");
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 3 :
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2082:6: ( (lv_aeParam_8_0= ruleArrayElement ) )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2082:6: ( (lv_aeParam_8_0= ruleArrayElement ) )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2083:1: (lv_aeParam_8_0= ruleArrayElement )
            	            {
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2083:1: (lv_aeParam_8_0= ruleArrayElement )
            	            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2084:3: lv_aeParam_8_0= ruleArrayElement
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getPrintAccess().getAeParamArrayElementParserRuleCall_3_1_2_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleArrayElement_in_rulePrint3889);
            	            lv_aeParam_8_0=ruleArrayElement();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getPrintRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"aeParam",
            	                    		lv_aeParam_8_0, 
            	                    		"ArrayElement");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop33;
                }
            } while (true);

            otherlv_9=(Token)match(input,17,FOLLOW_17_in_rulePrint3904); 

                	newLeafNode(otherlv_9, grammarAccess.getPrintAccess().getRightParenthesisKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePrint"


    // $ANTLR start "entryRuleFor"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2112:1: entryRuleFor returns [EObject current=null] : iv_ruleFor= ruleFor EOF ;
    public final EObject entryRuleFor() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFor = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2113:2: (iv_ruleFor= ruleFor EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2114:2: iv_ruleFor= ruleFor EOF
            {
             newCompositeNode(grammarAccess.getForRule()); 
            pushFollow(FOLLOW_ruleFor_in_entryRuleFor3940);
            iv_ruleFor=ruleFor();

            state._fsp--;

             current =iv_ruleFor; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFor3950); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFor"


    // $ANTLR start "ruleFor"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2121:1: ruleFor returns [EObject current=null] : ( ( ( (lv_function_0_0= 'for' ) ) otherlv_1= '(' otherlv_2= 'file' ( (otherlv_3= RULE_ID ) ) otherlv_4= ':' ( (lv_dir_5_0= ruleFolder ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_innerElements_8_0= ruleElement ) )* otherlv_9= '}' ) | ( ( (lv_function_10_0= 'for' ) ) otherlv_11= '(' ( (otherlv_12= RULE_ID ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_innerElements_15_0= ruleElement ) )* otherlv_16= '}' ) ) ;
    public final EObject ruleFor() throws RecognitionException {
        EObject current = null;

        Token lv_function_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token lv_function_10_0=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        EObject lv_dir_5_0 = null;

        EObject lv_innerElements_8_0 = null;

        EObject lv_innerElements_15_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2124:28: ( ( ( ( (lv_function_0_0= 'for' ) ) otherlv_1= '(' otherlv_2= 'file' ( (otherlv_3= RULE_ID ) ) otherlv_4= ':' ( (lv_dir_5_0= ruleFolder ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_innerElements_8_0= ruleElement ) )* otherlv_9= '}' ) | ( ( (lv_function_10_0= 'for' ) ) otherlv_11= '(' ( (otherlv_12= RULE_ID ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_innerElements_15_0= ruleElement ) )* otherlv_16= '}' ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2125:1: ( ( ( (lv_function_0_0= 'for' ) ) otherlv_1= '(' otherlv_2= 'file' ( (otherlv_3= RULE_ID ) ) otherlv_4= ':' ( (lv_dir_5_0= ruleFolder ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_innerElements_8_0= ruleElement ) )* otherlv_9= '}' ) | ( ( (lv_function_10_0= 'for' ) ) otherlv_11= '(' ( (otherlv_12= RULE_ID ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_innerElements_15_0= ruleElement ) )* otherlv_16= '}' ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2125:1: ( ( ( (lv_function_0_0= 'for' ) ) otherlv_1= '(' otherlv_2= 'file' ( (otherlv_3= RULE_ID ) ) otherlv_4= ':' ( (lv_dir_5_0= ruleFolder ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_innerElements_8_0= ruleElement ) )* otherlv_9= '}' ) | ( ( (lv_function_10_0= 'for' ) ) otherlv_11= '(' ( (otherlv_12= RULE_ID ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_innerElements_15_0= ruleElement ) )* otherlv_16= '}' ) )
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==24) ) {
                int LA36_1 = input.LA(2);

                if ( (LA36_1==16) ) {
                    int LA36_2 = input.LA(3);

                    if ( (LA36_2==RULE_ID) ) {
                        alt36=2;
                    }
                    else if ( (LA36_2==25) ) {
                        alt36=1;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 36, 2, input);

                        throw nvae;
                    }
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 36, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 36, 0, input);

                throw nvae;
            }
            switch (alt36) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2125:2: ( ( (lv_function_0_0= 'for' ) ) otherlv_1= '(' otherlv_2= 'file' ( (otherlv_3= RULE_ID ) ) otherlv_4= ':' ( (lv_dir_5_0= ruleFolder ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_innerElements_8_0= ruleElement ) )* otherlv_9= '}' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2125:2: ( ( (lv_function_0_0= 'for' ) ) otherlv_1= '(' otherlv_2= 'file' ( (otherlv_3= RULE_ID ) ) otherlv_4= ':' ( (lv_dir_5_0= ruleFolder ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_innerElements_8_0= ruleElement ) )* otherlv_9= '}' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2125:3: ( (lv_function_0_0= 'for' ) ) otherlv_1= '(' otherlv_2= 'file' ( (otherlv_3= RULE_ID ) ) otherlv_4= ':' ( (lv_dir_5_0= ruleFolder ) ) otherlv_6= ')' otherlv_7= '{' ( (lv_innerElements_8_0= ruleElement ) )* otherlv_9= '}'
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2125:3: ( (lv_function_0_0= 'for' ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2126:1: (lv_function_0_0= 'for' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2126:1: (lv_function_0_0= 'for' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2127:3: lv_function_0_0= 'for'
                    {
                    lv_function_0_0=(Token)match(input,24,FOLLOW_24_in_ruleFor3994); 

                            newLeafNode(lv_function_0_0, grammarAccess.getForAccess().getFunctionForKeyword_0_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForRule());
                    	        }
                           		setWithLastConsumed(current, "function", lv_function_0_0, "for");
                    	    

                    }


                    }

                    otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleFor4019); 

                        	newLeafNode(otherlv_1, grammarAccess.getForAccess().getLeftParenthesisKeyword_0_1());
                        
                    otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleFor4031); 

                        	newLeafNode(otherlv_2, grammarAccess.getForAccess().getFileKeyword_0_2());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2148:1: ( (otherlv_3= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2149:1: (otherlv_3= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2149:1: (otherlv_3= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2150:3: otherlv_3= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getForRule());
                    	        }
                            
                    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFor4051); 

                    		newLeafNode(otherlv_3, grammarAccess.getForAccess().getLocVarSimpleVariableCrossReference_0_3_0()); 
                    	

                    }


                    }

                    otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleFor4063); 

                        	newLeafNode(otherlv_4, grammarAccess.getForAccess().getColonKeyword_0_4());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2165:1: ( (lv_dir_5_0= ruleFolder ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2166:1: (lv_dir_5_0= ruleFolder )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2166:1: (lv_dir_5_0= ruleFolder )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2167:3: lv_dir_5_0= ruleFolder
                    {
                     
                    	        newCompositeNode(grammarAccess.getForAccess().getDirFolderParserRuleCall_0_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFolder_in_ruleFor4084);
                    lv_dir_5_0=ruleFolder();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getForRule());
                    	        }
                           		set(
                           			current, 
                           			"dir",
                            		lv_dir_5_0, 
                            		"Folder");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_6=(Token)match(input,17,FOLLOW_17_in_ruleFor4096); 

                        	newLeafNode(otherlv_6, grammarAccess.getForAccess().getRightParenthesisKeyword_0_6());
                        
                    otherlv_7=(Token)match(input,27,FOLLOW_27_in_ruleFor4108); 

                        	newLeafNode(otherlv_7, grammarAccess.getForAccess().getLeftCurlyBracketKeyword_0_7());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2191:1: ( (lv_innerElements_8_0= ruleElement ) )*
                    loop34:
                    do {
                        int alt34=2;
                        int LA34_0 = input.LA(1);

                        if ( (LA34_0==RULE_ID||LA34_0==11||(LA34_0>=13 && LA34_0<=15)||(LA34_0>=23 && LA34_0<=24)||(LA34_0>=29 && LA34_0<=33)) ) {
                            alt34=1;
                        }


                        switch (alt34) {
                    	case 1 :
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2192:1: (lv_innerElements_8_0= ruleElement )
                    	    {
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2192:1: (lv_innerElements_8_0= ruleElement )
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2193:3: lv_innerElements_8_0= ruleElement
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getForAccess().getInnerElementsElementParserRuleCall_0_8_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleElement_in_ruleFor4129);
                    	    lv_innerElements_8_0=ruleElement();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getForRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"innerElements",
                    	            		lv_innerElements_8_0, 
                    	            		"Element");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop34;
                        }
                    } while (true);

                    otherlv_9=(Token)match(input,28,FOLLOW_28_in_ruleFor4142); 

                        	newLeafNode(otherlv_9, grammarAccess.getForAccess().getRightCurlyBracketKeyword_0_9());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2214:6: ( ( (lv_function_10_0= 'for' ) ) otherlv_11= '(' ( (otherlv_12= RULE_ID ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_innerElements_15_0= ruleElement ) )* otherlv_16= '}' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2214:6: ( ( (lv_function_10_0= 'for' ) ) otherlv_11= '(' ( (otherlv_12= RULE_ID ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_innerElements_15_0= ruleElement ) )* otherlv_16= '}' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2214:7: ( (lv_function_10_0= 'for' ) ) otherlv_11= '(' ( (otherlv_12= RULE_ID ) ) otherlv_13= ')' otherlv_14= '{' ( (lv_innerElements_15_0= ruleElement ) )* otherlv_16= '}'
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2214:7: ( (lv_function_10_0= 'for' ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2215:1: (lv_function_10_0= 'for' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2215:1: (lv_function_10_0= 'for' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2216:3: lv_function_10_0= 'for'
                    {
                    lv_function_10_0=(Token)match(input,24,FOLLOW_24_in_ruleFor4168); 

                            newLeafNode(lv_function_10_0, grammarAccess.getForAccess().getFunctionForKeyword_1_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForRule());
                    	        }
                           		setWithLastConsumed(current, "function", lv_function_10_0, "for");
                    	    

                    }


                    }

                    otherlv_11=(Token)match(input,16,FOLLOW_16_in_ruleFor4193); 

                        	newLeafNode(otherlv_11, grammarAccess.getForAccess().getLeftParenthesisKeyword_1_1());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2233:1: ( (otherlv_12= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2234:1: (otherlv_12= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2234:1: (otherlv_12= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2235:3: otherlv_12= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getForRule());
                    	        }
                            
                    otherlv_12=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFor4213); 

                    		newLeafNode(otherlv_12, grammarAccess.getForAccess().getVarArrayCrossReference_1_2_0()); 
                    	

                    }


                    }

                    otherlv_13=(Token)match(input,17,FOLLOW_17_in_ruleFor4225); 

                        	newLeafNode(otherlv_13, grammarAccess.getForAccess().getRightParenthesisKeyword_1_3());
                        
                    otherlv_14=(Token)match(input,27,FOLLOW_27_in_ruleFor4237); 

                        	newLeafNode(otherlv_14, grammarAccess.getForAccess().getLeftCurlyBracketKeyword_1_4());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2254:1: ( (lv_innerElements_15_0= ruleElement ) )*
                    loop35:
                    do {
                        int alt35=2;
                        int LA35_0 = input.LA(1);

                        if ( (LA35_0==RULE_ID||LA35_0==11||(LA35_0>=13 && LA35_0<=15)||(LA35_0>=23 && LA35_0<=24)||(LA35_0>=29 && LA35_0<=33)) ) {
                            alt35=1;
                        }


                        switch (alt35) {
                    	case 1 :
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2255:1: (lv_innerElements_15_0= ruleElement )
                    	    {
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2255:1: (lv_innerElements_15_0= ruleElement )
                    	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2256:3: lv_innerElements_15_0= ruleElement
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getForAccess().getInnerElementsElementParserRuleCall_1_5_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleElement_in_ruleFor4258);
                    	    lv_innerElements_15_0=ruleElement();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getForRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"innerElements",
                    	            		lv_innerElements_15_0, 
                    	            		"Element");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop35;
                        }
                    } while (true);

                    otherlv_16=(Token)match(input,28,FOLLOW_28_in_ruleFor4271); 

                        	newLeafNode(otherlv_16, grammarAccess.getForAccess().getRightCurlyBracketKeyword_1_6());
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFor"


    // $ANTLR start "entryRuleForall"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2284:1: entryRuleForall returns [EObject current=null] : iv_ruleForall= ruleForall EOF ;
    public final EObject entryRuleForall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForall = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2285:2: (iv_ruleForall= ruleForall EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2286:2: iv_ruleForall= ruleForall EOF
            {
             newCompositeNode(grammarAccess.getForallRule()); 
            pushFollow(FOLLOW_ruleForall_in_entryRuleForall4308);
            iv_ruleForall=ruleForall();

            state._fsp--;

             current =iv_ruleForall; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleForall4318); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForall"


    // $ANTLR start "ruleForall"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2293:1: ruleForall returns [EObject current=null] : ( ( (lv_function_0_0= 'forall' ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( ( (lv_begin_3_0= RULE_INT ) ) | ( (otherlv_4= RULE_ID ) ) | ( (lv_beginFunction_5_0= ruleSize ) ) | ( (lv_beginAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_end_8_0= RULE_INT ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_endFunction_10_0= ruleSize ) ) | ( (lv_endAE_11_0= ruleArrayElement ) ) ) otherlv_12= ')' otherlv_13= '{' ( (lv_innerElements_14_0= ruleElement ) )* otherlv_15= '}' ) ;
    public final EObject ruleForall() throws RecognitionException {
        EObject current = null;

        Token lv_function_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_begin_3_0=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        Token lv_end_8_0=null;
        Token otherlv_9=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        EObject lv_beginFunction_5_0 = null;

        EObject lv_beginAE_6_0 = null;

        EObject lv_endFunction_10_0 = null;

        EObject lv_endAE_11_0 = null;

        EObject lv_innerElements_14_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2296:28: ( ( ( (lv_function_0_0= 'forall' ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( ( (lv_begin_3_0= RULE_INT ) ) | ( (otherlv_4= RULE_ID ) ) | ( (lv_beginFunction_5_0= ruleSize ) ) | ( (lv_beginAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_end_8_0= RULE_INT ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_endFunction_10_0= ruleSize ) ) | ( (lv_endAE_11_0= ruleArrayElement ) ) ) otherlv_12= ')' otherlv_13= '{' ( (lv_innerElements_14_0= ruleElement ) )* otherlv_15= '}' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2297:1: ( ( (lv_function_0_0= 'forall' ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( ( (lv_begin_3_0= RULE_INT ) ) | ( (otherlv_4= RULE_ID ) ) | ( (lv_beginFunction_5_0= ruleSize ) ) | ( (lv_beginAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_end_8_0= RULE_INT ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_endFunction_10_0= ruleSize ) ) | ( (lv_endAE_11_0= ruleArrayElement ) ) ) otherlv_12= ')' otherlv_13= '{' ( (lv_innerElements_14_0= ruleElement ) )* otherlv_15= '}' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2297:1: ( ( (lv_function_0_0= 'forall' ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( ( (lv_begin_3_0= RULE_INT ) ) | ( (otherlv_4= RULE_ID ) ) | ( (lv_beginFunction_5_0= ruleSize ) ) | ( (lv_beginAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_end_8_0= RULE_INT ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_endFunction_10_0= ruleSize ) ) | ( (lv_endAE_11_0= ruleArrayElement ) ) ) otherlv_12= ')' otherlv_13= '{' ( (lv_innerElements_14_0= ruleElement ) )* otherlv_15= '}' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2297:2: ( (lv_function_0_0= 'forall' ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '(' ( ( (lv_begin_3_0= RULE_INT ) ) | ( (otherlv_4= RULE_ID ) ) | ( (lv_beginFunction_5_0= ruleSize ) ) | ( (lv_beginAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_end_8_0= RULE_INT ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_endFunction_10_0= ruleSize ) ) | ( (lv_endAE_11_0= ruleArrayElement ) ) ) otherlv_12= ')' otherlv_13= '{' ( (lv_innerElements_14_0= ruleElement ) )* otherlv_15= '}'
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2297:2: ( (lv_function_0_0= 'forall' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2298:1: (lv_function_0_0= 'forall' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2298:1: (lv_function_0_0= 'forall' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2299:3: lv_function_0_0= 'forall'
            {
            lv_function_0_0=(Token)match(input,29,FOLLOW_29_in_ruleForall4361); 

                    newLeafNode(lv_function_0_0, grammarAccess.getForallAccess().getFunctionForallKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getForallRule());
            	        }
                   		setWithLastConsumed(current, "function", lv_function_0_0, "forall");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2312:2: ( (otherlv_1= RULE_ID ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2313:1: (otherlv_1= RULE_ID )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2313:1: (otherlv_1= RULE_ID )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2314:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getForallRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleForall4394); 

            		newLeafNode(otherlv_1, grammarAccess.getForallAccess().getLocVarSimpleVariableCrossReference_1_0()); 
            	

            }


            }

            otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleForall4406); 

                	newLeafNode(otherlv_2, grammarAccess.getForallAccess().getLeftParenthesisKeyword_2());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2329:1: ( ( (lv_begin_3_0= RULE_INT ) ) | ( (otherlv_4= RULE_ID ) ) | ( (lv_beginFunction_5_0= ruleSize ) ) | ( (lv_beginAE_6_0= ruleArrayElement ) ) )
            int alt37=4;
            alt37 = dfa37.predict(input);
            switch (alt37) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2329:2: ( (lv_begin_3_0= RULE_INT ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2329:2: ( (lv_begin_3_0= RULE_INT ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2330:1: (lv_begin_3_0= RULE_INT )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2330:1: (lv_begin_3_0= RULE_INT )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2331:3: lv_begin_3_0= RULE_INT
                    {
                    lv_begin_3_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleForall4424); 

                    			newLeafNode(lv_begin_3_0, grammarAccess.getForallAccess().getBeginINTTerminalRuleCall_3_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForallRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"begin",
                            		lv_begin_3_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2348:6: ( (otherlv_4= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2348:6: ( (otherlv_4= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2349:1: (otherlv_4= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2349:1: (otherlv_4= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2350:3: otherlv_4= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getForallRule());
                    	        }
                            
                    otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleForall4455); 

                    		newLeafNode(otherlv_4, grammarAccess.getForallAccess().getBeginVarSimpleVariableCrossReference_3_1_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2362:6: ( (lv_beginFunction_5_0= ruleSize ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2362:6: ( (lv_beginFunction_5_0= ruleSize ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2363:1: (lv_beginFunction_5_0= ruleSize )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2363:1: (lv_beginFunction_5_0= ruleSize )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2364:3: lv_beginFunction_5_0= ruleSize
                    {
                     
                    	        newCompositeNode(grammarAccess.getForallAccess().getBeginFunctionSizeParserRuleCall_3_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleSize_in_ruleForall4482);
                    lv_beginFunction_5_0=ruleSize();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getForallRule());
                    	        }
                           		set(
                           			current, 
                           			"beginFunction",
                            		lv_beginFunction_5_0, 
                            		"Size");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2381:6: ( (lv_beginAE_6_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2381:6: ( (lv_beginAE_6_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2382:1: (lv_beginAE_6_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2382:1: (lv_beginAE_6_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2383:3: lv_beginAE_6_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getForallAccess().getBeginAEArrayElementParserRuleCall_3_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleForall4509);
                    lv_beginAE_6_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getForallRule());
                    	        }
                           		set(
                           			current, 
                           			"beginAE",
                            		lv_beginAE_6_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,12,FOLLOW_12_in_ruleForall4522); 

                	newLeafNode(otherlv_7, grammarAccess.getForallAccess().getCommaKeyword_4());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2403:1: ( ( (lv_end_8_0= RULE_INT ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_endFunction_10_0= ruleSize ) ) | ( (lv_endAE_11_0= ruleArrayElement ) ) )
            int alt38=4;
            alt38 = dfa38.predict(input);
            switch (alt38) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2403:2: ( (lv_end_8_0= RULE_INT ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2403:2: ( (lv_end_8_0= RULE_INT ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2404:1: (lv_end_8_0= RULE_INT )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2404:1: (lv_end_8_0= RULE_INT )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2405:3: lv_end_8_0= RULE_INT
                    {
                    lv_end_8_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleForall4540); 

                    			newLeafNode(lv_end_8_0, grammarAccess.getForallAccess().getEndINTTerminalRuleCall_5_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getForallRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"end",
                            		lv_end_8_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2422:6: ( (otherlv_9= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2422:6: ( (otherlv_9= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2423:1: (otherlv_9= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2423:1: (otherlv_9= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2424:3: otherlv_9= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getForallRule());
                    	        }
                            
                    otherlv_9=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleForall4571); 

                    		newLeafNode(otherlv_9, grammarAccess.getForallAccess().getEndVarSimpleVariableCrossReference_5_1_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2436:6: ( (lv_endFunction_10_0= ruleSize ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2436:6: ( (lv_endFunction_10_0= ruleSize ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2437:1: (lv_endFunction_10_0= ruleSize )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2437:1: (lv_endFunction_10_0= ruleSize )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2438:3: lv_endFunction_10_0= ruleSize
                    {
                     
                    	        newCompositeNode(grammarAccess.getForallAccess().getEndFunctionSizeParserRuleCall_5_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleSize_in_ruleForall4598);
                    lv_endFunction_10_0=ruleSize();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getForallRule());
                    	        }
                           		set(
                           			current, 
                           			"endFunction",
                            		lv_endFunction_10_0, 
                            		"Size");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2455:6: ( (lv_endAE_11_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2455:6: ( (lv_endAE_11_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2456:1: (lv_endAE_11_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2456:1: (lv_endAE_11_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2457:3: lv_endAE_11_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getForallAccess().getEndAEArrayElementParserRuleCall_5_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleForall4625);
                    lv_endAE_11_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getForallRule());
                    	        }
                           		set(
                           			current, 
                           			"endAE",
                            		lv_endAE_11_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_12=(Token)match(input,17,FOLLOW_17_in_ruleForall4638); 

                	newLeafNode(otherlv_12, grammarAccess.getForallAccess().getRightParenthesisKeyword_6());
                
            otherlv_13=(Token)match(input,27,FOLLOW_27_in_ruleForall4650); 

                	newLeafNode(otherlv_13, grammarAccess.getForallAccess().getLeftCurlyBracketKeyword_7());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2481:1: ( (lv_innerElements_14_0= ruleElement ) )*
            loop39:
            do {
                int alt39=2;
                int LA39_0 = input.LA(1);

                if ( (LA39_0==RULE_ID||LA39_0==11||(LA39_0>=13 && LA39_0<=15)||(LA39_0>=23 && LA39_0<=24)||(LA39_0>=29 && LA39_0<=33)) ) {
                    alt39=1;
                }


                switch (alt39) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2482:1: (lv_innerElements_14_0= ruleElement )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2482:1: (lv_innerElements_14_0= ruleElement )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2483:3: lv_innerElements_14_0= ruleElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getForallAccess().getInnerElementsElementParserRuleCall_8_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleElement_in_ruleForall4671);
            	    lv_innerElements_14_0=ruleElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getForallRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"innerElements",
            	            		lv_innerElements_14_0, 
            	            		"Element");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop39;
                }
            } while (true);

            otherlv_15=(Token)match(input,28,FOLLOW_28_in_ruleForall4684); 

                	newLeafNode(otherlv_15, grammarAccess.getForallAccess().getRightCurlyBracketKeyword_9());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForall"


    // $ANTLR start "entryRuleCRFunction"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2511:1: entryRuleCRFunction returns [EObject current=null] : iv_ruleCRFunction= ruleCRFunction EOF ;
    public final EObject entryRuleCRFunction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCRFunction = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2512:2: (iv_ruleCRFunction= ruleCRFunction EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2513:2: iv_ruleCRFunction= ruleCRFunction EOF
            {
             newCompositeNode(grammarAccess.getCRFunctionRule()); 
            pushFollow(FOLLOW_ruleCRFunction_in_entryRuleCRFunction4720);
            iv_ruleCRFunction=ruleCRFunction();

            state._fsp--;

             current =iv_ruleCRFunction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCRFunction4730); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCRFunction"


    // $ANTLR start "ruleCRFunction"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2520:1: ruleCRFunction returns [EObject current=null] : ( ( (lv_calcCR_0_0= ruleCalcCR ) ) | ( (lv_calcMean_1_0= ruleCalcMean ) ) | ( (lv_highestCR_2_0= ruleHighestCR ) ) | ( (lv_findSimilar_3_0= ruleFindSimilar ) ) ) ;
    public final EObject ruleCRFunction() throws RecognitionException {
        EObject current = null;

        EObject lv_calcCR_0_0 = null;

        EObject lv_calcMean_1_0 = null;

        EObject lv_highestCR_2_0 = null;

        EObject lv_findSimilar_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2523:28: ( ( ( (lv_calcCR_0_0= ruleCalcCR ) ) | ( (lv_calcMean_1_0= ruleCalcMean ) ) | ( (lv_highestCR_2_0= ruleHighestCR ) ) | ( (lv_findSimilar_3_0= ruleFindSimilar ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2524:1: ( ( (lv_calcCR_0_0= ruleCalcCR ) ) | ( (lv_calcMean_1_0= ruleCalcMean ) ) | ( (lv_highestCR_2_0= ruleHighestCR ) ) | ( (lv_findSimilar_3_0= ruleFindSimilar ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2524:1: ( ( (lv_calcCR_0_0= ruleCalcCR ) ) | ( (lv_calcMean_1_0= ruleCalcMean ) ) | ( (lv_highestCR_2_0= ruleHighestCR ) ) | ( (lv_findSimilar_3_0= ruleFindSimilar ) ) )
            int alt40=4;
            switch ( input.LA(1) ) {
            case 30:
                {
                alt40=1;
                }
                break;
            case 31:
                {
                alt40=2;
                }
                break;
            case 32:
                {
                alt40=3;
                }
                break;
            case 33:
                {
                alt40=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 40, 0, input);

                throw nvae;
            }

            switch (alt40) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2524:2: ( (lv_calcCR_0_0= ruleCalcCR ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2524:2: ( (lv_calcCR_0_0= ruleCalcCR ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2525:1: (lv_calcCR_0_0= ruleCalcCR )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2525:1: (lv_calcCR_0_0= ruleCalcCR )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2526:3: lv_calcCR_0_0= ruleCalcCR
                    {
                     
                    	        newCompositeNode(grammarAccess.getCRFunctionAccess().getCalcCRCalcCRParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcCR_in_ruleCRFunction4776);
                    lv_calcCR_0_0=ruleCalcCR();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCRFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"calcCR",
                            		lv_calcCR_0_0, 
                            		"CalcCR");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2543:6: ( (lv_calcMean_1_0= ruleCalcMean ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2543:6: ( (lv_calcMean_1_0= ruleCalcMean ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2544:1: (lv_calcMean_1_0= ruleCalcMean )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2544:1: (lv_calcMean_1_0= ruleCalcMean )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2545:3: lv_calcMean_1_0= ruleCalcMean
                    {
                     
                    	        newCompositeNode(grammarAccess.getCRFunctionAccess().getCalcMeanCalcMeanParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcMean_in_ruleCRFunction4803);
                    lv_calcMean_1_0=ruleCalcMean();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCRFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"calcMean",
                            		lv_calcMean_1_0, 
                            		"CalcMean");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2562:6: ( (lv_highestCR_2_0= ruleHighestCR ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2562:6: ( (lv_highestCR_2_0= ruleHighestCR ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2563:1: (lv_highestCR_2_0= ruleHighestCR )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2563:1: (lv_highestCR_2_0= ruleHighestCR )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2564:3: lv_highestCR_2_0= ruleHighestCR
                    {
                     
                    	        newCompositeNode(grammarAccess.getCRFunctionAccess().getHighestCRHighestCRParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleHighestCR_in_ruleCRFunction4830);
                    lv_highestCR_2_0=ruleHighestCR();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCRFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"highestCR",
                            		lv_highestCR_2_0, 
                            		"HighestCR");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2581:6: ( (lv_findSimilar_3_0= ruleFindSimilar ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2581:6: ( (lv_findSimilar_3_0= ruleFindSimilar ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2582:1: (lv_findSimilar_3_0= ruleFindSimilar )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2582:1: (lv_findSimilar_3_0= ruleFindSimilar )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2583:3: lv_findSimilar_3_0= ruleFindSimilar
                    {
                     
                    	        newCompositeNode(grammarAccess.getCRFunctionAccess().getFindSimilarFindSimilarParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFindSimilar_in_ruleCRFunction4857);
                    lv_findSimilar_3_0=ruleFindSimilar();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCRFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"findSimilar",
                            		lv_findSimilar_3_0, 
                            		"FindSimilar");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCRFunction"


    // $ANTLR start "entryRuleCalcCR"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2607:1: entryRuleCalcCR returns [EObject current=null] : iv_ruleCalcCR= ruleCalcCR EOF ;
    public final EObject entryRuleCalcCR() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCalcCR = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2608:2: (iv_ruleCalcCR= ruleCalcCR EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2609:2: iv_ruleCalcCR= ruleCalcCR EOF
            {
             newCompositeNode(grammarAccess.getCalcCRRule()); 
            pushFollow(FOLLOW_ruleCalcCR_in_entryRuleCalcCR4893);
            iv_ruleCalcCR=ruleCalcCR();

            state._fsp--;

             current =iv_ruleCalcCR; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCalcCR4903); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCalcCR"


    // $ANTLR start "ruleCalcCR"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2616:1: ruleCalcCR returns [EObject current=null] : ( ( ( (lv_function_0_0= 'calcCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) ) otherlv_4= ')' ) | ( ( (lv_function_5_0= 'calcCR' ) ) otherlv_6= '(' ( ( (lv_arrayElement1_7_0= ruleArrayElement ) ) | ( (otherlv_8= RULE_ID ) ) ) otherlv_9= ',' ( ( (lv_arrayElement2_10_0= ruleArrayElement ) ) | ( (otherlv_11= RULE_ID ) ) ) otherlv_12= ')' ) ) ;
    public final EObject ruleCalcCR() throws RecognitionException {
        EObject current = null;

        Token lv_function_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token lv_function_5_0=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        EObject lv_arrayElement_3_0 = null;

        EObject lv_arrayElement1_7_0 = null;

        EObject lv_arrayElement2_10_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2619:28: ( ( ( ( (lv_function_0_0= 'calcCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) ) otherlv_4= ')' ) | ( ( (lv_function_5_0= 'calcCR' ) ) otherlv_6= '(' ( ( (lv_arrayElement1_7_0= ruleArrayElement ) ) | ( (otherlv_8= RULE_ID ) ) ) otherlv_9= ',' ( ( (lv_arrayElement2_10_0= ruleArrayElement ) ) | ( (otherlv_11= RULE_ID ) ) ) otherlv_12= ')' ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2620:1: ( ( ( (lv_function_0_0= 'calcCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) ) otherlv_4= ')' ) | ( ( (lv_function_5_0= 'calcCR' ) ) otherlv_6= '(' ( ( (lv_arrayElement1_7_0= ruleArrayElement ) ) | ( (otherlv_8= RULE_ID ) ) ) otherlv_9= ',' ( ( (lv_arrayElement2_10_0= ruleArrayElement ) ) | ( (otherlv_11= RULE_ID ) ) ) otherlv_12= ')' ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2620:1: ( ( ( (lv_function_0_0= 'calcCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) ) otherlv_4= ')' ) | ( ( (lv_function_5_0= 'calcCR' ) ) otherlv_6= '(' ( ( (lv_arrayElement1_7_0= ruleArrayElement ) ) | ( (otherlv_8= RULE_ID ) ) ) otherlv_9= ',' ( ( (lv_arrayElement2_10_0= ruleArrayElement ) ) | ( (otherlv_11= RULE_ID ) ) ) otherlv_12= ')' ) )
            int alt44=2;
            alt44 = dfa44.predict(input);
            switch (alt44) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2620:2: ( ( (lv_function_0_0= 'calcCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) ) otherlv_4= ')' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2620:2: ( ( (lv_function_0_0= 'calcCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) ) otherlv_4= ')' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2620:3: ( (lv_function_0_0= 'calcCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) ) otherlv_4= ')'
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2620:3: ( (lv_function_0_0= 'calcCR' ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2621:1: (lv_function_0_0= 'calcCR' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2621:1: (lv_function_0_0= 'calcCR' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2622:3: lv_function_0_0= 'calcCR'
                    {
                    lv_function_0_0=(Token)match(input,30,FOLLOW_30_in_ruleCalcCR4947); 

                            newLeafNode(lv_function_0_0, grammarAccess.getCalcCRAccess().getFunctionCalcCRKeyword_0_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getCalcCRRule());
                    	        }
                           		setWithLastConsumed(current, "function", lv_function_0_0, "calcCR");
                    	    

                    }


                    }

                    otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleCalcCR4972); 

                        	newLeafNode(otherlv_1, grammarAccess.getCalcCRAccess().getLeftParenthesisKeyword_0_1());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2639:1: ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) )
                    int alt41=2;
                    int LA41_0 = input.LA(1);

                    if ( (LA41_0==RULE_ID) ) {
                        int LA41_1 = input.LA(2);

                        if ( (LA41_1==17) ) {
                            alt41=1;
                        }
                        else if ( (LA41_1==37) ) {
                            alt41=2;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 41, 1, input);

                            throw nvae;
                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 41, 0, input);

                        throw nvae;
                    }
                    switch (alt41) {
                        case 1 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2639:2: ( (otherlv_2= RULE_ID ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2639:2: ( (otherlv_2= RULE_ID ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2640:1: (otherlv_2= RULE_ID )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2640:1: (otherlv_2= RULE_ID )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2641:3: otherlv_2= RULE_ID
                            {

                            			if (current==null) {
                            	            current = createModelElement(grammarAccess.getCalcCRRule());
                            	        }
                                    
                            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCalcCR4993); 

                            		newLeafNode(otherlv_2, grammarAccess.getCalcCRAccess().getVectorArrayCrossReference_0_2_0_0()); 
                            	

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2653:6: ( (lv_arrayElement_3_0= ruleArrayElement ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2653:6: ( (lv_arrayElement_3_0= ruleArrayElement ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2654:1: (lv_arrayElement_3_0= ruleArrayElement )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2654:1: (lv_arrayElement_3_0= ruleArrayElement )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2655:3: lv_arrayElement_3_0= ruleArrayElement
                            {
                             
                            	        newCompositeNode(grammarAccess.getCalcCRAccess().getArrayElementArrayElementParserRuleCall_0_2_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleArrayElement_in_ruleCalcCR5020);
                            lv_arrayElement_3_0=ruleArrayElement();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getCalcCRRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"arrayElement",
                                    		lv_arrayElement_3_0, 
                                    		"ArrayElement");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }

                    otherlv_4=(Token)match(input,17,FOLLOW_17_in_ruleCalcCR5033); 

                        	newLeafNode(otherlv_4, grammarAccess.getCalcCRAccess().getRightParenthesisKeyword_0_3());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2676:6: ( ( (lv_function_5_0= 'calcCR' ) ) otherlv_6= '(' ( ( (lv_arrayElement1_7_0= ruleArrayElement ) ) | ( (otherlv_8= RULE_ID ) ) ) otherlv_9= ',' ( ( (lv_arrayElement2_10_0= ruleArrayElement ) ) | ( (otherlv_11= RULE_ID ) ) ) otherlv_12= ')' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2676:6: ( ( (lv_function_5_0= 'calcCR' ) ) otherlv_6= '(' ( ( (lv_arrayElement1_7_0= ruleArrayElement ) ) | ( (otherlv_8= RULE_ID ) ) ) otherlv_9= ',' ( ( (lv_arrayElement2_10_0= ruleArrayElement ) ) | ( (otherlv_11= RULE_ID ) ) ) otherlv_12= ')' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2676:7: ( (lv_function_5_0= 'calcCR' ) ) otherlv_6= '(' ( ( (lv_arrayElement1_7_0= ruleArrayElement ) ) | ( (otherlv_8= RULE_ID ) ) ) otherlv_9= ',' ( ( (lv_arrayElement2_10_0= ruleArrayElement ) ) | ( (otherlv_11= RULE_ID ) ) ) otherlv_12= ')'
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2676:7: ( (lv_function_5_0= 'calcCR' ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2677:1: (lv_function_5_0= 'calcCR' )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2677:1: (lv_function_5_0= 'calcCR' )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2678:3: lv_function_5_0= 'calcCR'
                    {
                    lv_function_5_0=(Token)match(input,30,FOLLOW_30_in_ruleCalcCR5059); 

                            newLeafNode(lv_function_5_0, grammarAccess.getCalcCRAccess().getFunctionCalcCRKeyword_1_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getCalcCRRule());
                    	        }
                           		setWithLastConsumed(current, "function", lv_function_5_0, "calcCR");
                    	    

                    }


                    }

                    otherlv_6=(Token)match(input,16,FOLLOW_16_in_ruleCalcCR5084); 

                        	newLeafNode(otherlv_6, grammarAccess.getCalcCRAccess().getLeftParenthesisKeyword_1_1());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2695:1: ( ( (lv_arrayElement1_7_0= ruleArrayElement ) ) | ( (otherlv_8= RULE_ID ) ) )
                    int alt42=2;
                    int LA42_0 = input.LA(1);

                    if ( (LA42_0==RULE_ID) ) {
                        int LA42_1 = input.LA(2);

                        if ( (LA42_1==37) ) {
                            alt42=1;
                        }
                        else if ( (LA42_1==12) ) {
                            alt42=2;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 42, 1, input);

                            throw nvae;
                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 42, 0, input);

                        throw nvae;
                    }
                    switch (alt42) {
                        case 1 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2695:2: ( (lv_arrayElement1_7_0= ruleArrayElement ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2695:2: ( (lv_arrayElement1_7_0= ruleArrayElement ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2696:1: (lv_arrayElement1_7_0= ruleArrayElement )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2696:1: (lv_arrayElement1_7_0= ruleArrayElement )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2697:3: lv_arrayElement1_7_0= ruleArrayElement
                            {
                             
                            	        newCompositeNode(grammarAccess.getCalcCRAccess().getArrayElement1ArrayElementParserRuleCall_1_2_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleArrayElement_in_ruleCalcCR5106);
                            lv_arrayElement1_7_0=ruleArrayElement();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getCalcCRRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"arrayElement1",
                                    		lv_arrayElement1_7_0, 
                                    		"ArrayElement");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2714:6: ( (otherlv_8= RULE_ID ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2714:6: ( (otherlv_8= RULE_ID ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2715:1: (otherlv_8= RULE_ID )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2715:1: (otherlv_8= RULE_ID )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2716:3: otherlv_8= RULE_ID
                            {

                            			if (current==null) {
                            	            current = createModelElement(grammarAccess.getCalcCRRule());
                            	        }
                                    
                            otherlv_8=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCalcCR5132); 

                            		newLeafNode(otherlv_8, grammarAccess.getCalcCRAccess().getVar1SimpleVariableCrossReference_1_2_1_0()); 
                            	

                            }


                            }


                            }
                            break;

                    }

                    otherlv_9=(Token)match(input,12,FOLLOW_12_in_ruleCalcCR5145); 

                        	newLeafNode(otherlv_9, grammarAccess.getCalcCRAccess().getCommaKeyword_1_3());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2731:1: ( ( (lv_arrayElement2_10_0= ruleArrayElement ) ) | ( (otherlv_11= RULE_ID ) ) )
                    int alt43=2;
                    int LA43_0 = input.LA(1);

                    if ( (LA43_0==RULE_ID) ) {
                        int LA43_1 = input.LA(2);

                        if ( (LA43_1==17) ) {
                            alt43=2;
                        }
                        else if ( (LA43_1==37) ) {
                            alt43=1;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 43, 1, input);

                            throw nvae;
                        }
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 43, 0, input);

                        throw nvae;
                    }
                    switch (alt43) {
                        case 1 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2731:2: ( (lv_arrayElement2_10_0= ruleArrayElement ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2731:2: ( (lv_arrayElement2_10_0= ruleArrayElement ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2732:1: (lv_arrayElement2_10_0= ruleArrayElement )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2732:1: (lv_arrayElement2_10_0= ruleArrayElement )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2733:3: lv_arrayElement2_10_0= ruleArrayElement
                            {
                             
                            	        newCompositeNode(grammarAccess.getCalcCRAccess().getArrayElement2ArrayElementParserRuleCall_1_4_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleArrayElement_in_ruleCalcCR5167);
                            lv_arrayElement2_10_0=ruleArrayElement();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getCalcCRRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"arrayElement2",
                                    		lv_arrayElement2_10_0, 
                                    		"ArrayElement");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2750:6: ( (otherlv_11= RULE_ID ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2750:6: ( (otherlv_11= RULE_ID ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2751:1: (otherlv_11= RULE_ID )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2751:1: (otherlv_11= RULE_ID )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2752:3: otherlv_11= RULE_ID
                            {

                            			if (current==null) {
                            	            current = createModelElement(grammarAccess.getCalcCRRule());
                            	        }
                                    
                            otherlv_11=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCalcCR5193); 

                            		newLeafNode(otherlv_11, grammarAccess.getCalcCRAccess().getVar2VariableCrossReference_1_4_1_0()); 
                            	

                            }


                            }


                            }
                            break;

                    }

                    otherlv_12=(Token)match(input,17,FOLLOW_17_in_ruleCalcCR5206); 

                        	newLeafNode(otherlv_12, grammarAccess.getCalcCRAccess().getRightParenthesisKeyword_1_5());
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCalcCR"


    // $ANTLR start "entryRuleCalcMean"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2775:1: entryRuleCalcMean returns [EObject current=null] : iv_ruleCalcMean= ruleCalcMean EOF ;
    public final EObject entryRuleCalcMean() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCalcMean = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2776:2: (iv_ruleCalcMean= ruleCalcMean EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2777:2: iv_ruleCalcMean= ruleCalcMean EOF
            {
             newCompositeNode(grammarAccess.getCalcMeanRule()); 
            pushFollow(FOLLOW_ruleCalcMean_in_entryRuleCalcMean5243);
            iv_ruleCalcMean=ruleCalcMean();

            state._fsp--;

             current =iv_ruleCalcMean; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCalcMean5253); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCalcMean"


    // $ANTLR start "ruleCalcMean"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2784:1: ruleCalcMean returns [EObject current=null] : ( ( (lv_function_0_0= 'calcMean' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')' ) ;
    public final EObject ruleCalcMean() throws RecognitionException {
        EObject current = null;

        Token lv_function_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        EObject lv_arrayElement_3_0 = null;

        EObject lv_calcCR_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2787:28: ( ( ( (lv_function_0_0= 'calcMean' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2788:1: ( ( (lv_function_0_0= 'calcMean' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2788:1: ( ( (lv_function_0_0= 'calcMean' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2788:2: ( (lv_function_0_0= 'calcMean' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')'
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2788:2: ( (lv_function_0_0= 'calcMean' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2789:1: (lv_function_0_0= 'calcMean' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2789:1: (lv_function_0_0= 'calcMean' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2790:3: lv_function_0_0= 'calcMean'
            {
            lv_function_0_0=(Token)match(input,31,FOLLOW_31_in_ruleCalcMean5296); 

                    newLeafNode(lv_function_0_0, grammarAccess.getCalcMeanAccess().getFunctionCalcMeanKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getCalcMeanRule());
            	        }
                   		setWithLastConsumed(current, "function", lv_function_0_0, "calcMean");
            	    

            }


            }

            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleCalcMean5321); 

                	newLeafNode(otherlv_1, grammarAccess.getCalcMeanAccess().getLeftParenthesisKeyword_1());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2807:1: ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) )
            int alt45=3;
            int LA45_0 = input.LA(1);

            if ( (LA45_0==RULE_ID) ) {
                int LA45_1 = input.LA(2);

                if ( (LA45_1==37) ) {
                    alt45=2;
                }
                else if ( (LA45_1==17) ) {
                    alt45=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 45, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA45_0==30) ) {
                alt45=3;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 45, 0, input);

                throw nvae;
            }
            switch (alt45) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2807:2: ( (otherlv_2= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2807:2: ( (otherlv_2= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2808:1: (otherlv_2= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2808:1: (otherlv_2= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2809:3: otherlv_2= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getCalcMeanRule());
                    	        }
                            
                    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCalcMean5342); 

                    		newLeafNode(otherlv_2, grammarAccess.getCalcMeanAccess().getArrayArrayCrossReference_2_0_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2821:6: ( (lv_arrayElement_3_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2821:6: ( (lv_arrayElement_3_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2822:1: (lv_arrayElement_3_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2822:1: (lv_arrayElement_3_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2823:3: lv_arrayElement_3_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getCalcMeanAccess().getArrayElementArrayElementParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleCalcMean5369);
                    lv_arrayElement_3_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCalcMeanRule());
                    	        }
                           		set(
                           			current, 
                           			"arrayElement",
                            		lv_arrayElement_3_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2840:6: ( (lv_calcCR_4_0= ruleCalcCR ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2840:6: ( (lv_calcCR_4_0= ruleCalcCR ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2841:1: (lv_calcCR_4_0= ruleCalcCR )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2841:1: (lv_calcCR_4_0= ruleCalcCR )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2842:3: lv_calcCR_4_0= ruleCalcCR
                    {
                     
                    	        newCompositeNode(grammarAccess.getCalcMeanAccess().getCalcCRCalcCRParserRuleCall_2_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcCR_in_ruleCalcMean5396);
                    lv_calcCR_4_0=ruleCalcCR();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCalcMeanRule());
                    	        }
                           		set(
                           			current, 
                           			"calcCR",
                            		lv_calcCR_4_0, 
                            		"CalcCR");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,17,FOLLOW_17_in_ruleCalcMean5409); 

                	newLeafNode(otherlv_5, grammarAccess.getCalcMeanAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCalcMean"


    // $ANTLR start "entryRuleHighestCR"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2870:1: entryRuleHighestCR returns [EObject current=null] : iv_ruleHighestCR= ruleHighestCR EOF ;
    public final EObject entryRuleHighestCR() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHighestCR = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2871:2: (iv_ruleHighestCR= ruleHighestCR EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2872:2: iv_ruleHighestCR= ruleHighestCR EOF
            {
             newCompositeNode(grammarAccess.getHighestCRRule()); 
            pushFollow(FOLLOW_ruleHighestCR_in_entryRuleHighestCR5445);
            iv_ruleHighestCR=ruleHighestCR();

            state._fsp--;

             current =iv_ruleHighestCR; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHighestCR5455); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHighestCR"


    // $ANTLR start "ruleHighestCR"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2879:1: ruleHighestCR returns [EObject current=null] : ( ( (lv_function_0_0= 'highestCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')' ) ;
    public final EObject ruleHighestCR() throws RecognitionException {
        EObject current = null;

        Token lv_function_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        EObject lv_arrayElement_3_0 = null;

        EObject lv_calcCR_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2882:28: ( ( ( (lv_function_0_0= 'highestCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2883:1: ( ( (lv_function_0_0= 'highestCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2883:1: ( ( (lv_function_0_0= 'highestCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2883:2: ( (lv_function_0_0= 'highestCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) ) otherlv_5= ')'
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2883:2: ( (lv_function_0_0= 'highestCR' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2884:1: (lv_function_0_0= 'highestCR' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2884:1: (lv_function_0_0= 'highestCR' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2885:3: lv_function_0_0= 'highestCR'
            {
            lv_function_0_0=(Token)match(input,32,FOLLOW_32_in_ruleHighestCR5498); 

                    newLeafNode(lv_function_0_0, grammarAccess.getHighestCRAccess().getFunctionHighestCRKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getHighestCRRule());
            	        }
                   		setWithLastConsumed(current, "function", lv_function_0_0, "highestCR");
            	    

            }


            }

            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleHighestCR5523); 

                	newLeafNode(otherlv_1, grammarAccess.getHighestCRAccess().getLeftParenthesisKeyword_1());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2902:1: ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) | ( (lv_calcCR_4_0= ruleCalcCR ) ) )
            int alt46=3;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==RULE_ID) ) {
                int LA46_1 = input.LA(2);

                if ( (LA46_1==17) ) {
                    alt46=1;
                }
                else if ( (LA46_1==37) ) {
                    alt46=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 46, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA46_0==30) ) {
                alt46=3;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 46, 0, input);

                throw nvae;
            }
            switch (alt46) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2902:2: ( (otherlv_2= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2902:2: ( (otherlv_2= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2903:1: (otherlv_2= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2903:1: (otherlv_2= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2904:3: otherlv_2= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getHighestCRRule());
                    	        }
                            
                    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleHighestCR5544); 

                    		newLeafNode(otherlv_2, grammarAccess.getHighestCRAccess().getArrayArrayCrossReference_2_0_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2916:6: ( (lv_arrayElement_3_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2916:6: ( (lv_arrayElement_3_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2917:1: (lv_arrayElement_3_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2917:1: (lv_arrayElement_3_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2918:3: lv_arrayElement_3_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getHighestCRAccess().getArrayElementArrayElementParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleHighestCR5571);
                    lv_arrayElement_3_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getHighestCRRule());
                    	        }
                           		set(
                           			current, 
                           			"arrayElement",
                            		lv_arrayElement_3_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2935:6: ( (lv_calcCR_4_0= ruleCalcCR ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2935:6: ( (lv_calcCR_4_0= ruleCalcCR ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2936:1: (lv_calcCR_4_0= ruleCalcCR )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2936:1: (lv_calcCR_4_0= ruleCalcCR )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2937:3: lv_calcCR_4_0= ruleCalcCR
                    {
                     
                    	        newCompositeNode(grammarAccess.getHighestCRAccess().getCalcCRCalcCRParserRuleCall_2_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcCR_in_ruleHighestCR5598);
                    lv_calcCR_4_0=ruleCalcCR();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getHighestCRRule());
                    	        }
                           		set(
                           			current, 
                           			"calcCR",
                            		lv_calcCR_4_0, 
                            		"CalcCR");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,17,FOLLOW_17_in_ruleHighestCR5611); 

                	newLeafNode(otherlv_5, grammarAccess.getHighestCRAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHighestCR"


    // $ANTLR start "entryRuleFindSimilar"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2965:1: entryRuleFindSimilar returns [EObject current=null] : iv_ruleFindSimilar= ruleFindSimilar EOF ;
    public final EObject entryRuleFindSimilar() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFindSimilar = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2966:2: (iv_ruleFindSimilar= ruleFindSimilar EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2967:2: iv_ruleFindSimilar= ruleFindSimilar EOF
            {
             newCompositeNode(grammarAccess.getFindSimilarRule()); 
            pushFollow(FOLLOW_ruleFindSimilar_in_entryRuleFindSimilar5647);
            iv_ruleFindSimilar=ruleFindSimilar();

            state._fsp--;

             current =iv_ruleFindSimilar; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFindSimilar5657); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFindSimilar"


    // $ANTLR start "ruleFindSimilar"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2974:1: ruleFindSimilar returns [EObject current=null] : ( ( (lv_function_0_0= 'findSimilar' ) ) otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( ( (lv_indxInt_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) | ( (lv_indxAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_similarityNum_8_0= ruleNumber ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_similarityAE_10_0= ruleArrayElement ) ) | ( (lv_similarityCalcCR_11_0= ruleCalcCR ) ) | ( (lv_similarityCalcMean_12_0= ruleCalcMean ) ) ) otherlv_13= ')' ) ;
    public final EObject ruleFindSimilar() throws RecognitionException {
        EObject current = null;

        Token lv_function_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_indxInt_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_13=null;
        EObject lv_indxAE_6_0 = null;

        EObject lv_similarityNum_8_0 = null;

        EObject lv_similarityAE_10_0 = null;

        EObject lv_similarityCalcCR_11_0 = null;

        EObject lv_similarityCalcMean_12_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2977:28: ( ( ( (lv_function_0_0= 'findSimilar' ) ) otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( ( (lv_indxInt_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) | ( (lv_indxAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_similarityNum_8_0= ruleNumber ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_similarityAE_10_0= ruleArrayElement ) ) | ( (lv_similarityCalcCR_11_0= ruleCalcCR ) ) | ( (lv_similarityCalcMean_12_0= ruleCalcMean ) ) ) otherlv_13= ')' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2978:1: ( ( (lv_function_0_0= 'findSimilar' ) ) otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( ( (lv_indxInt_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) | ( (lv_indxAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_similarityNum_8_0= ruleNumber ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_similarityAE_10_0= ruleArrayElement ) ) | ( (lv_similarityCalcCR_11_0= ruleCalcCR ) ) | ( (lv_similarityCalcMean_12_0= ruleCalcMean ) ) ) otherlv_13= ')' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2978:1: ( ( (lv_function_0_0= 'findSimilar' ) ) otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( ( (lv_indxInt_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) | ( (lv_indxAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_similarityNum_8_0= ruleNumber ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_similarityAE_10_0= ruleArrayElement ) ) | ( (lv_similarityCalcCR_11_0= ruleCalcCR ) ) | ( (lv_similarityCalcMean_12_0= ruleCalcMean ) ) ) otherlv_13= ')' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2978:2: ( (lv_function_0_0= 'findSimilar' ) ) otherlv_1= '(' ( (otherlv_2= RULE_ID ) ) otherlv_3= ',' ( ( (lv_indxInt_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) | ( (lv_indxAE_6_0= ruleArrayElement ) ) ) otherlv_7= ',' ( ( (lv_similarityNum_8_0= ruleNumber ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_similarityAE_10_0= ruleArrayElement ) ) | ( (lv_similarityCalcCR_11_0= ruleCalcCR ) ) | ( (lv_similarityCalcMean_12_0= ruleCalcMean ) ) ) otherlv_13= ')'
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2978:2: ( (lv_function_0_0= 'findSimilar' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2979:1: (lv_function_0_0= 'findSimilar' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2979:1: (lv_function_0_0= 'findSimilar' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2980:3: lv_function_0_0= 'findSimilar'
            {
            lv_function_0_0=(Token)match(input,33,FOLLOW_33_in_ruleFindSimilar5700); 

                    newLeafNode(lv_function_0_0, grammarAccess.getFindSimilarAccess().getFunctionFindSimilarKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFindSimilarRule());
            	        }
                   		setWithLastConsumed(current, "function", lv_function_0_0, "findSimilar");
            	    

            }


            }

            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleFindSimilar5725); 

                	newLeafNode(otherlv_1, grammarAccess.getFindSimilarAccess().getLeftParenthesisKeyword_1());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2997:1: ( (otherlv_2= RULE_ID ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2998:1: (otherlv_2= RULE_ID )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2998:1: (otherlv_2= RULE_ID )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:2999:3: otherlv_2= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getFindSimilarRule());
            	        }
                    
            otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFindSimilar5745); 

            		newLeafNode(otherlv_2, grammarAccess.getFindSimilarAccess().getMatrixArrayCrossReference_2_0()); 
            	

            }


            }

            otherlv_3=(Token)match(input,12,FOLLOW_12_in_ruleFindSimilar5757); 

                	newLeafNode(otherlv_3, grammarAccess.getFindSimilarAccess().getCommaKeyword_3());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3014:1: ( ( (lv_indxInt_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) | ( (lv_indxAE_6_0= ruleArrayElement ) ) )
            int alt47=3;
            int LA47_0 = input.LA(1);

            if ( (LA47_0==RULE_INT) ) {
                alt47=1;
            }
            else if ( (LA47_0==RULE_ID) ) {
                int LA47_2 = input.LA(2);

                if ( (LA47_2==37) ) {
                    alt47=3;
                }
                else if ( (LA47_2==12) ) {
                    alt47=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 47, 2, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 47, 0, input);

                throw nvae;
            }
            switch (alt47) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3014:2: ( (lv_indxInt_4_0= RULE_INT ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3014:2: ( (lv_indxInt_4_0= RULE_INT ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3015:1: (lv_indxInt_4_0= RULE_INT )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3015:1: (lv_indxInt_4_0= RULE_INT )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3016:3: lv_indxInt_4_0= RULE_INT
                    {
                    lv_indxInt_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleFindSimilar5775); 

                    			newLeafNode(lv_indxInt_4_0, grammarAccess.getFindSimilarAccess().getIndxIntINTTerminalRuleCall_4_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFindSimilarRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"indxInt",
                            		lv_indxInt_4_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3033:6: ( (otherlv_5= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3033:6: ( (otherlv_5= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3034:1: (otherlv_5= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3034:1: (otherlv_5= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3035:3: otherlv_5= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getFindSimilarRule());
                    	        }
                            
                    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFindSimilar5806); 

                    		newLeafNode(otherlv_5, grammarAccess.getFindSimilarAccess().getIndxVarSimpleVariableCrossReference_4_1_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3047:6: ( (lv_indxAE_6_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3047:6: ( (lv_indxAE_6_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3048:1: (lv_indxAE_6_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3048:1: (lv_indxAE_6_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3049:3: lv_indxAE_6_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getFindSimilarAccess().getIndxAEArrayElementParserRuleCall_4_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleFindSimilar5833);
                    lv_indxAE_6_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFindSimilarRule());
                    	        }
                           		set(
                           			current, 
                           			"indxAE",
                            		lv_indxAE_6_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_7=(Token)match(input,12,FOLLOW_12_in_ruleFindSimilar5846); 

                	newLeafNode(otherlv_7, grammarAccess.getFindSimilarAccess().getCommaKeyword_5());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3069:1: ( ( (lv_similarityNum_8_0= ruleNumber ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_similarityAE_10_0= ruleArrayElement ) ) | ( (lv_similarityCalcCR_11_0= ruleCalcCR ) ) | ( (lv_similarityCalcMean_12_0= ruleCalcMean ) ) )
            int alt48=5;
            switch ( input.LA(1) ) {
            case RULE_INT:
                {
                alt48=1;
                }
                break;
            case RULE_ID:
                {
                int LA48_2 = input.LA(2);

                if ( (LA48_2==37) ) {
                    alt48=3;
                }
                else if ( (LA48_2==17) ) {
                    alt48=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 48, 2, input);

                    throw nvae;
                }
                }
                break;
            case 30:
                {
                alt48=4;
                }
                break;
            case 31:
                {
                alt48=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 48, 0, input);

                throw nvae;
            }

            switch (alt48) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3069:2: ( (lv_similarityNum_8_0= ruleNumber ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3069:2: ( (lv_similarityNum_8_0= ruleNumber ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3070:1: (lv_similarityNum_8_0= ruleNumber )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3070:1: (lv_similarityNum_8_0= ruleNumber )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3071:3: lv_similarityNum_8_0= ruleNumber
                    {
                     
                    	        newCompositeNode(grammarAccess.getFindSimilarAccess().getSimilarityNumNumberParserRuleCall_6_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleNumber_in_ruleFindSimilar5868);
                    lv_similarityNum_8_0=ruleNumber();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFindSimilarRule());
                    	        }
                           		set(
                           			current, 
                           			"similarityNum",
                            		lv_similarityNum_8_0, 
                            		"Number");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3088:6: ( (otherlv_9= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3088:6: ( (otherlv_9= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3089:1: (otherlv_9= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3089:1: (otherlv_9= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3090:3: otherlv_9= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getFindSimilarRule());
                    	        }
                            
                    otherlv_9=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFindSimilar5894); 

                    		newLeafNode(otherlv_9, grammarAccess.getFindSimilarAccess().getSimilarityVarSimpleVariableCrossReference_6_1_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3102:6: ( (lv_similarityAE_10_0= ruleArrayElement ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3102:6: ( (lv_similarityAE_10_0= ruleArrayElement ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3103:1: (lv_similarityAE_10_0= ruleArrayElement )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3103:1: (lv_similarityAE_10_0= ruleArrayElement )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3104:3: lv_similarityAE_10_0= ruleArrayElement
                    {
                     
                    	        newCompositeNode(grammarAccess.getFindSimilarAccess().getSimilarityAEArrayElementParserRuleCall_6_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleArrayElement_in_ruleFindSimilar5921);
                    lv_similarityAE_10_0=ruleArrayElement();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFindSimilarRule());
                    	        }
                           		set(
                           			current, 
                           			"similarityAE",
                            		lv_similarityAE_10_0, 
                            		"ArrayElement");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3121:6: ( (lv_similarityCalcCR_11_0= ruleCalcCR ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3121:6: ( (lv_similarityCalcCR_11_0= ruleCalcCR ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3122:1: (lv_similarityCalcCR_11_0= ruleCalcCR )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3122:1: (lv_similarityCalcCR_11_0= ruleCalcCR )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3123:3: lv_similarityCalcCR_11_0= ruleCalcCR
                    {
                     
                    	        newCompositeNode(grammarAccess.getFindSimilarAccess().getSimilarityCalcCRCalcCRParserRuleCall_6_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcCR_in_ruleFindSimilar5948);
                    lv_similarityCalcCR_11_0=ruleCalcCR();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFindSimilarRule());
                    	        }
                           		set(
                           			current, 
                           			"similarityCalcCR",
                            		lv_similarityCalcCR_11_0, 
                            		"CalcCR");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 5 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3140:6: ( (lv_similarityCalcMean_12_0= ruleCalcMean ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3140:6: ( (lv_similarityCalcMean_12_0= ruleCalcMean ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3141:1: (lv_similarityCalcMean_12_0= ruleCalcMean )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3141:1: (lv_similarityCalcMean_12_0= ruleCalcMean )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3142:3: lv_similarityCalcMean_12_0= ruleCalcMean
                    {
                     
                    	        newCompositeNode(grammarAccess.getFindSimilarAccess().getSimilarityCalcMeanCalcMeanParserRuleCall_6_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCalcMean_in_ruleFindSimilar5975);
                    lv_similarityCalcMean_12_0=ruleCalcMean();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFindSimilarRule());
                    	        }
                           		set(
                           			current, 
                           			"similarityCalcMean",
                            		lv_similarityCalcMean_12_0, 
                            		"CalcMean");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_13=(Token)match(input,17,FOLLOW_17_in_ruleFindSimilar5988); 

                	newLeafNode(otherlv_13, grammarAccess.getFindSimilarAccess().getRightParenthesisKeyword_7());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFindSimilar"


    // $ANTLR start "entryRuleSimpleVariable"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3172:1: entryRuleSimpleVariable returns [EObject current=null] : iv_ruleSimpleVariable= ruleSimpleVariable EOF ;
    public final EObject entryRuleSimpleVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleVariable = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3173:2: (iv_ruleSimpleVariable= ruleSimpleVariable EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3174:2: iv_ruleSimpleVariable= ruleSimpleVariable EOF
            {
             newCompositeNode(grammarAccess.getSimpleVariableRule()); 
            pushFollow(FOLLOW_ruleSimpleVariable_in_entryRuleSimpleVariable6026);
            iv_ruleSimpleVariable=ruleSimpleVariable();

            state._fsp--;

             current =iv_ruleSimpleVariable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimpleVariable6036); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimpleVariable"


    // $ANTLR start "ruleSimpleVariable"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3181:1: ruleSimpleVariable returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ;
    public final EObject ruleSimpleVariable() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3184:28: ( ( (lv_name_0_0= RULE_ID ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3185:1: ( (lv_name_0_0= RULE_ID ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3185:1: ( (lv_name_0_0= RULE_ID ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3186:1: (lv_name_0_0= RULE_ID )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3186:1: (lv_name_0_0= RULE_ID )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3187:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSimpleVariable6077); 

            			newLeafNode(lv_name_0_0, grammarAccess.getSimpleVariableAccess().getNameIDTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSimpleVariableRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimpleVariable"


    // $ANTLR start "entryRuleArray"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3211:1: entryRuleArray returns [EObject current=null] : iv_ruleArray= ruleArray EOF ;
    public final EObject entryRuleArray() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArray = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3212:2: (iv_ruleArray= ruleArray EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3213:2: iv_ruleArray= ruleArray EOF
            {
             newCompositeNode(grammarAccess.getArrayRule()); 
            pushFollow(FOLLOW_ruleArray_in_entryRuleArray6117);
            iv_ruleArray=ruleArray();

            state._fsp--;

             current =iv_ruleArray; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleArray6127); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArray"


    // $ANTLR start "ruleArray"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3220:1: ruleArray returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ;
    public final EObject ruleArray() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3223:28: ( ( (lv_name_0_0= RULE_ID ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3224:1: ( (lv_name_0_0= RULE_ID ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3224:1: ( (lv_name_0_0= RULE_ID ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3225:1: (lv_name_0_0= RULE_ID )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3225:1: (lv_name_0_0= RULE_ID )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3226:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleArray6168); 

            			newLeafNode(lv_name_0_0, grammarAccess.getArrayAccess().getNameIDTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getArrayRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArray"


    // $ANTLR start "entryRuleNumber"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3250:1: entryRuleNumber returns [EObject current=null] : iv_ruleNumber= ruleNumber EOF ;
    public final EObject entryRuleNumber() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumber = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3251:2: (iv_ruleNumber= ruleNumber EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3252:2: iv_ruleNumber= ruleNumber EOF
            {
             newCompositeNode(grammarAccess.getNumberRule()); 
            pushFollow(FOLLOW_ruleNumber_in_entryRuleNumber6208);
            iv_ruleNumber=ruleNumber();

            state._fsp--;

             current =iv_ruleNumber; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumber6218); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumber"


    // $ANTLR start "ruleNumber"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3259:1: ruleNumber returns [EObject current=null] : ( ( (lv_integer_0_0= RULE_INT ) ) (otherlv_1= '.' ( (lv_decimal_2_0= RULE_INT ) ) )? ) ;
    public final EObject ruleNumber() throws RecognitionException {
        EObject current = null;

        Token lv_integer_0_0=null;
        Token otherlv_1=null;
        Token lv_decimal_2_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3262:28: ( ( ( (lv_integer_0_0= RULE_INT ) ) (otherlv_1= '.' ( (lv_decimal_2_0= RULE_INT ) ) )? ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3263:1: ( ( (lv_integer_0_0= RULE_INT ) ) (otherlv_1= '.' ( (lv_decimal_2_0= RULE_INT ) ) )? )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3263:1: ( ( (lv_integer_0_0= RULE_INT ) ) (otherlv_1= '.' ( (lv_decimal_2_0= RULE_INT ) ) )? )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3263:2: ( (lv_integer_0_0= RULE_INT ) ) (otherlv_1= '.' ( (lv_decimal_2_0= RULE_INT ) ) )?
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3263:2: ( (lv_integer_0_0= RULE_INT ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3264:1: (lv_integer_0_0= RULE_INT )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3264:1: (lv_integer_0_0= RULE_INT )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3265:3: lv_integer_0_0= RULE_INT
            {
            lv_integer_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleNumber6260); 

            			newLeafNode(lv_integer_0_0, grammarAccess.getNumberAccess().getIntegerINTTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getNumberRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"integer",
                    		lv_integer_0_0, 
                    		"INT");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3281:2: (otherlv_1= '.' ( (lv_decimal_2_0= RULE_INT ) ) )?
            int alt49=2;
            int LA49_0 = input.LA(1);

            if ( (LA49_0==19) ) {
                alt49=1;
            }
            switch (alt49) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3281:4: otherlv_1= '.' ( (lv_decimal_2_0= RULE_INT ) )
                    {
                    otherlv_1=(Token)match(input,19,FOLLOW_19_in_ruleNumber6278); 

                        	newLeafNode(otherlv_1, grammarAccess.getNumberAccess().getFullStopKeyword_1_0());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3285:1: ( (lv_decimal_2_0= RULE_INT ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3286:1: (lv_decimal_2_0= RULE_INT )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3286:1: (lv_decimal_2_0= RULE_INT )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3287:3: lv_decimal_2_0= RULE_INT
                    {
                    lv_decimal_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleNumber6295); 

                    			newLeafNode(lv_decimal_2_0, grammarAccess.getNumberAccess().getDecimalINTTerminalRuleCall_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getNumberRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"decimal",
                            		lv_decimal_2_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumber"


    // $ANTLR start "entryRuleFolder"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3311:1: entryRuleFolder returns [EObject current=null] : iv_ruleFolder= ruleFolder EOF ;
    public final EObject entryRuleFolder() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFolder = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3312:2: (iv_ruleFolder= ruleFolder EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3313:2: iv_ruleFolder= ruleFolder EOF
            {
             newCompositeNode(grammarAccess.getFolderRule()); 
            pushFollow(FOLLOW_ruleFolder_in_entryRuleFolder6338);
            iv_ruleFolder=ruleFolder();

            state._fsp--;

             current =iv_ruleFolder; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFolder6348); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFolder"


    // $ANTLR start "ruleFolder"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3320:1: ruleFolder returns [EObject current=null] : ( ( (lv_linuxFolder_0_0= ruleLinuxFolder ) ) | ( (lv_windowsFolder_1_0= ruleWindowsFolder ) ) ) ;
    public final EObject ruleFolder() throws RecognitionException {
        EObject current = null;

        EObject lv_linuxFolder_0_0 = null;

        EObject lv_windowsFolder_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3323:28: ( ( ( (lv_linuxFolder_0_0= ruleLinuxFolder ) ) | ( (lv_windowsFolder_1_0= ruleWindowsFolder ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3324:1: ( ( (lv_linuxFolder_0_0= ruleLinuxFolder ) ) | ( (lv_windowsFolder_1_0= ruleWindowsFolder ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3324:1: ( ( (lv_linuxFolder_0_0= ruleLinuxFolder ) ) | ( (lv_windowsFolder_1_0= ruleWindowsFolder ) ) )
            int alt50=2;
            int LA50_0 = input.LA(1);

            if ( (LA50_0==35) ) {
                alt50=1;
            }
            else if ( (LA50_0==RULE_ID) ) {
                alt50=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 50, 0, input);

                throw nvae;
            }
            switch (alt50) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3324:2: ( (lv_linuxFolder_0_0= ruleLinuxFolder ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3324:2: ( (lv_linuxFolder_0_0= ruleLinuxFolder ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3325:1: (lv_linuxFolder_0_0= ruleLinuxFolder )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3325:1: (lv_linuxFolder_0_0= ruleLinuxFolder )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3326:3: lv_linuxFolder_0_0= ruleLinuxFolder
                    {
                     
                    	        newCompositeNode(grammarAccess.getFolderAccess().getLinuxFolderLinuxFolderParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleLinuxFolder_in_ruleFolder6394);
                    lv_linuxFolder_0_0=ruleLinuxFolder();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFolderRule());
                    	        }
                           		set(
                           			current, 
                           			"linuxFolder",
                            		lv_linuxFolder_0_0, 
                            		"LinuxFolder");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3343:6: ( (lv_windowsFolder_1_0= ruleWindowsFolder ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3343:6: ( (lv_windowsFolder_1_0= ruleWindowsFolder ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3344:1: (lv_windowsFolder_1_0= ruleWindowsFolder )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3344:1: (lv_windowsFolder_1_0= ruleWindowsFolder )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3345:3: lv_windowsFolder_1_0= ruleWindowsFolder
                    {
                     
                    	        newCompositeNode(grammarAccess.getFolderAccess().getWindowsFolderWindowsFolderParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleWindowsFolder_in_ruleFolder6421);
                    lv_windowsFolder_1_0=ruleWindowsFolder();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFolderRule());
                    	        }
                           		set(
                           			current, 
                           			"windowsFolder",
                            		lv_windowsFolder_1_0, 
                            		"WindowsFolder");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFolder"


    // $ANTLR start "entryRuleArchive"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3369:1: entryRuleArchive returns [EObject current=null] : iv_ruleArchive= ruleArchive EOF ;
    public final EObject entryRuleArchive() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArchive = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3370:2: (iv_ruleArchive= ruleArchive EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3371:2: iv_ruleArchive= ruleArchive EOF
            {
             newCompositeNode(grammarAccess.getArchiveRule()); 
            pushFollow(FOLLOW_ruleArchive_in_entryRuleArchive6457);
            iv_ruleArchive=ruleArchive();

            state._fsp--;

             current =iv_ruleArchive; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleArchive6467); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArchive"


    // $ANTLR start "ruleArchive"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3378:1: ruleArchive returns [EObject current=null] : ( ( (lv_folder_0_0= ruleFolder ) )? ( (lv_arq_1_0= RULE_ID ) ) ( (lv_arq_2_0= '.' ) ) ( (lv_arq_3_0= 'clu' ) ) ) ;
    public final EObject ruleArchive() throws RecognitionException {
        EObject current = null;

        Token lv_arq_1_0=null;
        Token lv_arq_2_0=null;
        Token lv_arq_3_0=null;
        EObject lv_folder_0_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3381:28: ( ( ( (lv_folder_0_0= ruleFolder ) )? ( (lv_arq_1_0= RULE_ID ) ) ( (lv_arq_2_0= '.' ) ) ( (lv_arq_3_0= 'clu' ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3382:1: ( ( (lv_folder_0_0= ruleFolder ) )? ( (lv_arq_1_0= RULE_ID ) ) ( (lv_arq_2_0= '.' ) ) ( (lv_arq_3_0= 'clu' ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3382:1: ( ( (lv_folder_0_0= ruleFolder ) )? ( (lv_arq_1_0= RULE_ID ) ) ( (lv_arq_2_0= '.' ) ) ( (lv_arq_3_0= 'clu' ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3382:2: ( (lv_folder_0_0= ruleFolder ) )? ( (lv_arq_1_0= RULE_ID ) ) ( (lv_arq_2_0= '.' ) ) ( (lv_arq_3_0= 'clu' ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3382:2: ( (lv_folder_0_0= ruleFolder ) )?
            int alt51=2;
            int LA51_0 = input.LA(1);

            if ( (LA51_0==35) ) {
                alt51=1;
            }
            else if ( (LA51_0==RULE_ID) ) {
                int LA51_2 = input.LA(2);

                if ( (LA51_2==36) ) {
                    alt51=1;
                }
            }
            switch (alt51) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3383:1: (lv_folder_0_0= ruleFolder )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3383:1: (lv_folder_0_0= ruleFolder )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3384:3: lv_folder_0_0= ruleFolder
                    {
                     
                    	        newCompositeNode(grammarAccess.getArchiveAccess().getFolderFolderParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFolder_in_ruleArchive6513);
                    lv_folder_0_0=ruleFolder();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getArchiveRule());
                    	        }
                           		set(
                           			current, 
                           			"folder",
                            		lv_folder_0_0, 
                            		"Folder");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3400:3: ( (lv_arq_1_0= RULE_ID ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3401:1: (lv_arq_1_0= RULE_ID )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3401:1: (lv_arq_1_0= RULE_ID )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3402:3: lv_arq_1_0= RULE_ID
            {
            lv_arq_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleArchive6531); 

            			newLeafNode(lv_arq_1_0, grammarAccess.getArchiveAccess().getArqIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getArchiveRule());
            	        }
                   		addWithLastConsumed(
                   			current, 
                   			"arq",
                    		lv_arq_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3418:2: ( (lv_arq_2_0= '.' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3419:1: (lv_arq_2_0= '.' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3419:1: (lv_arq_2_0= '.' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3420:3: lv_arq_2_0= '.'
            {
            lv_arq_2_0=(Token)match(input,19,FOLLOW_19_in_ruleArchive6554); 

                    newLeafNode(lv_arq_2_0, grammarAccess.getArchiveAccess().getArqFullStopKeyword_2_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getArchiveRule());
            	        }
                   		addWithLastConsumed(current, "arq", lv_arq_2_0, ".");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3433:2: ( (lv_arq_3_0= 'clu' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3434:1: (lv_arq_3_0= 'clu' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3434:1: (lv_arq_3_0= 'clu' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3435:3: lv_arq_3_0= 'clu'
            {
            lv_arq_3_0=(Token)match(input,34,FOLLOW_34_in_ruleArchive6585); 

                    newLeafNode(lv_arq_3_0, grammarAccess.getArchiveAccess().getArqCluKeyword_3_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getArchiveRule());
            	        }
                   		addWithLastConsumed(current, "arq", lv_arq_3_0, "clu");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArchive"


    // $ANTLR start "entryRuleLinuxFolder"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3456:1: entryRuleLinuxFolder returns [EObject current=null] : iv_ruleLinuxFolder= ruleLinuxFolder EOF ;
    public final EObject entryRuleLinuxFolder() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLinuxFolder = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3457:2: (iv_ruleLinuxFolder= ruleLinuxFolder EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3458:2: iv_ruleLinuxFolder= ruleLinuxFolder EOF
            {
             newCompositeNode(grammarAccess.getLinuxFolderRule()); 
            pushFollow(FOLLOW_ruleLinuxFolder_in_entryRuleLinuxFolder6634);
            iv_ruleLinuxFolder=ruleLinuxFolder();

            state._fsp--;

             current =iv_ruleLinuxFolder; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLinuxFolder6644); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLinuxFolder"


    // $ANTLR start "ruleLinuxFolder"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3465:1: ruleLinuxFolder returns [EObject current=null] : ( ( (lv_unixFolder_0_0= '/' ) ) ( ( (lv_unixFolder_1_0= RULE_ID ) ) ( (lv_unixFolder_2_0= '/' ) ) )* ) ;
    public final EObject ruleLinuxFolder() throws RecognitionException {
        EObject current = null;

        Token lv_unixFolder_0_0=null;
        Token lv_unixFolder_1_0=null;
        Token lv_unixFolder_2_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3468:28: ( ( ( (lv_unixFolder_0_0= '/' ) ) ( ( (lv_unixFolder_1_0= RULE_ID ) ) ( (lv_unixFolder_2_0= '/' ) ) )* ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3469:1: ( ( (lv_unixFolder_0_0= '/' ) ) ( ( (lv_unixFolder_1_0= RULE_ID ) ) ( (lv_unixFolder_2_0= '/' ) ) )* )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3469:1: ( ( (lv_unixFolder_0_0= '/' ) ) ( ( (lv_unixFolder_1_0= RULE_ID ) ) ( (lv_unixFolder_2_0= '/' ) ) )* )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3469:2: ( (lv_unixFolder_0_0= '/' ) ) ( ( (lv_unixFolder_1_0= RULE_ID ) ) ( (lv_unixFolder_2_0= '/' ) ) )*
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3469:2: ( (lv_unixFolder_0_0= '/' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3470:1: (lv_unixFolder_0_0= '/' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3470:1: (lv_unixFolder_0_0= '/' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3471:3: lv_unixFolder_0_0= '/'
            {
            lv_unixFolder_0_0=(Token)match(input,35,FOLLOW_35_in_ruleLinuxFolder6687); 

                    newLeafNode(lv_unixFolder_0_0, grammarAccess.getLinuxFolderAccess().getUnixFolderSolidusKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getLinuxFolderRule());
            	        }
                   		addWithLastConsumed(current, "unixFolder", lv_unixFolder_0_0, "/");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3484:2: ( ( (lv_unixFolder_1_0= RULE_ID ) ) ( (lv_unixFolder_2_0= '/' ) ) )*
            loop52:
            do {
                int alt52=2;
                int LA52_0 = input.LA(1);

                if ( (LA52_0==RULE_ID) ) {
                    int LA52_2 = input.LA(2);

                    if ( (LA52_2==35) ) {
                        alt52=1;
                    }


                }


                switch (alt52) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3484:3: ( (lv_unixFolder_1_0= RULE_ID ) ) ( (lv_unixFolder_2_0= '/' ) )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3484:3: ( (lv_unixFolder_1_0= RULE_ID ) )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3485:1: (lv_unixFolder_1_0= RULE_ID )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3485:1: (lv_unixFolder_1_0= RULE_ID )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3486:3: lv_unixFolder_1_0= RULE_ID
            	    {
            	    lv_unixFolder_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLinuxFolder6718); 

            	    			newLeafNode(lv_unixFolder_1_0, grammarAccess.getLinuxFolderAccess().getUnixFolderIDTerminalRuleCall_1_0_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getLinuxFolderRule());
            	    	        }
            	           		addWithLastConsumed(
            	           			current, 
            	           			"unixFolder",
            	            		lv_unixFolder_1_0, 
            	            		"ID");
            	    	    

            	    }


            	    }

            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3502:2: ( (lv_unixFolder_2_0= '/' ) )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3503:1: (lv_unixFolder_2_0= '/' )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3503:1: (lv_unixFolder_2_0= '/' )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3504:3: lv_unixFolder_2_0= '/'
            	    {
            	    lv_unixFolder_2_0=(Token)match(input,35,FOLLOW_35_in_ruleLinuxFolder6741); 

            	            newLeafNode(lv_unixFolder_2_0, grammarAccess.getLinuxFolderAccess().getUnixFolderSolidusKeyword_1_1_0());
            	        

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getLinuxFolderRule());
            	    	        }
            	           		addWithLastConsumed(current, "unixFolder", lv_unixFolder_2_0, "/");
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop52;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLinuxFolder"


    // $ANTLR start "entryRuleWindowsFolder"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3525:1: entryRuleWindowsFolder returns [EObject current=null] : iv_ruleWindowsFolder= ruleWindowsFolder EOF ;
    public final EObject entryRuleWindowsFolder() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleWindowsFolder = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3526:2: (iv_ruleWindowsFolder= ruleWindowsFolder EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3527:2: iv_ruleWindowsFolder= ruleWindowsFolder EOF
            {
             newCompositeNode(grammarAccess.getWindowsFolderRule()); 
            pushFollow(FOLLOW_ruleWindowsFolder_in_entryRuleWindowsFolder6792);
            iv_ruleWindowsFolder=ruleWindowsFolder();

            state._fsp--;

             current =iv_ruleWindowsFolder; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleWindowsFolder6802); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleWindowsFolder"


    // $ANTLR start "ruleWindowsFolder"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3534:1: ruleWindowsFolder returns [EObject current=null] : ( ( (lv_windowsFolder_0_0= RULE_ID ) ) ( (lv_windowsFolder_1_0= ':/' ) ) ( ( (lv_windowsFolder_2_0= RULE_ID ) ) ( (lv_windowsFolder_3_0= '/' ) ) )* ) ;
    public final EObject ruleWindowsFolder() throws RecognitionException {
        EObject current = null;

        Token lv_windowsFolder_0_0=null;
        Token lv_windowsFolder_1_0=null;
        Token lv_windowsFolder_2_0=null;
        Token lv_windowsFolder_3_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3537:28: ( ( ( (lv_windowsFolder_0_0= RULE_ID ) ) ( (lv_windowsFolder_1_0= ':/' ) ) ( ( (lv_windowsFolder_2_0= RULE_ID ) ) ( (lv_windowsFolder_3_0= '/' ) ) )* ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3538:1: ( ( (lv_windowsFolder_0_0= RULE_ID ) ) ( (lv_windowsFolder_1_0= ':/' ) ) ( ( (lv_windowsFolder_2_0= RULE_ID ) ) ( (lv_windowsFolder_3_0= '/' ) ) )* )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3538:1: ( ( (lv_windowsFolder_0_0= RULE_ID ) ) ( (lv_windowsFolder_1_0= ':/' ) ) ( ( (lv_windowsFolder_2_0= RULE_ID ) ) ( (lv_windowsFolder_3_0= '/' ) ) )* )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3538:2: ( (lv_windowsFolder_0_0= RULE_ID ) ) ( (lv_windowsFolder_1_0= ':/' ) ) ( ( (lv_windowsFolder_2_0= RULE_ID ) ) ( (lv_windowsFolder_3_0= '/' ) ) )*
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3538:2: ( (lv_windowsFolder_0_0= RULE_ID ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3539:1: (lv_windowsFolder_0_0= RULE_ID )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3539:1: (lv_windowsFolder_0_0= RULE_ID )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3540:3: lv_windowsFolder_0_0= RULE_ID
            {
            lv_windowsFolder_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleWindowsFolder6844); 

            			newLeafNode(lv_windowsFolder_0_0, grammarAccess.getWindowsFolderAccess().getWindowsFolderIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getWindowsFolderRule());
            	        }
                   		addWithLastConsumed(
                   			current, 
                   			"windowsFolder",
                    		lv_windowsFolder_0_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3556:2: ( (lv_windowsFolder_1_0= ':/' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3557:1: (lv_windowsFolder_1_0= ':/' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3557:1: (lv_windowsFolder_1_0= ':/' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3558:3: lv_windowsFolder_1_0= ':/'
            {
            lv_windowsFolder_1_0=(Token)match(input,36,FOLLOW_36_in_ruleWindowsFolder6867); 

                    newLeafNode(lv_windowsFolder_1_0, grammarAccess.getWindowsFolderAccess().getWindowsFolderColonSolidusKeyword_1_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getWindowsFolderRule());
            	        }
                   		addWithLastConsumed(current, "windowsFolder", lv_windowsFolder_1_0, ":/");
            	    

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3571:2: ( ( (lv_windowsFolder_2_0= RULE_ID ) ) ( (lv_windowsFolder_3_0= '/' ) ) )*
            loop53:
            do {
                int alt53=2;
                int LA53_0 = input.LA(1);

                if ( (LA53_0==RULE_ID) ) {
                    int LA53_2 = input.LA(2);

                    if ( (LA53_2==35) ) {
                        alt53=1;
                    }


                }


                switch (alt53) {
            	case 1 :
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3571:3: ( (lv_windowsFolder_2_0= RULE_ID ) ) ( (lv_windowsFolder_3_0= '/' ) )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3571:3: ( (lv_windowsFolder_2_0= RULE_ID ) )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3572:1: (lv_windowsFolder_2_0= RULE_ID )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3572:1: (lv_windowsFolder_2_0= RULE_ID )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3573:3: lv_windowsFolder_2_0= RULE_ID
            	    {
            	    lv_windowsFolder_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleWindowsFolder6898); 

            	    			newLeafNode(lv_windowsFolder_2_0, grammarAccess.getWindowsFolderAccess().getWindowsFolderIDTerminalRuleCall_2_0_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getWindowsFolderRule());
            	    	        }
            	           		addWithLastConsumed(
            	           			current, 
            	           			"windowsFolder",
            	            		lv_windowsFolder_2_0, 
            	            		"ID");
            	    	    

            	    }


            	    }

            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3589:2: ( (lv_windowsFolder_3_0= '/' ) )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3590:1: (lv_windowsFolder_3_0= '/' )
            	    {
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3590:1: (lv_windowsFolder_3_0= '/' )
            	    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3591:3: lv_windowsFolder_3_0= '/'
            	    {
            	    lv_windowsFolder_3_0=(Token)match(input,35,FOLLOW_35_in_ruleWindowsFolder6921); 

            	            newLeafNode(lv_windowsFolder_3_0, grammarAccess.getWindowsFolderAccess().getWindowsFolderSolidusKeyword_2_1_0());
            	        

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getWindowsFolderRule());
            	    	        }
            	           		addWithLastConsumed(current, "windowsFolder", lv_windowsFolder_3_0, "/");
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop53;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleWindowsFolder"


    // $ANTLR start "entryRuleArrayElement"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3612:1: entryRuleArrayElement returns [EObject current=null] : iv_ruleArrayElement= ruleArrayElement EOF ;
    public final EObject entryRuleArrayElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArrayElement = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3613:2: (iv_ruleArrayElement= ruleArrayElement EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3614:2: iv_ruleArrayElement= ruleArrayElement EOF
            {
             newCompositeNode(grammarAccess.getArrayElementRule()); 
            pushFollow(FOLLOW_ruleArrayElement_in_entryRuleArrayElement6972);
            iv_ruleArrayElement=ruleArrayElement();

            state._fsp--;

             current =iv_ruleArrayElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleArrayElement6982); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArrayElement"


    // $ANTLR start "ruleArrayElement"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3621:1: ruleArrayElement returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) ( (lv_idx_1_0= ruleIndex ) ) ) ;
    public final EObject ruleArrayElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_idx_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3624:28: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_idx_1_0= ruleIndex ) ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3625:1: ( ( (otherlv_0= RULE_ID ) ) ( (lv_idx_1_0= ruleIndex ) ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3625:1: ( ( (otherlv_0= RULE_ID ) ) ( (lv_idx_1_0= ruleIndex ) ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3625:2: ( (otherlv_0= RULE_ID ) ) ( (lv_idx_1_0= ruleIndex ) )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3625:2: ( (otherlv_0= RULE_ID ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3626:1: (otherlv_0= RULE_ID )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3626:1: (otherlv_0= RULE_ID )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3627:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getArrayElementRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleArrayElement7027); 

            		newLeafNode(otherlv_0, grammarAccess.getArrayElementAccess().getArrayArrayCrossReference_0_0()); 
            	

            }


            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3638:2: ( (lv_idx_1_0= ruleIndex ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3639:1: (lv_idx_1_0= ruleIndex )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3639:1: (lv_idx_1_0= ruleIndex )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3640:3: lv_idx_1_0= ruleIndex
            {
             
            	        newCompositeNode(grammarAccess.getArrayElementAccess().getIdxIndexParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleIndex_in_ruleArrayElement7048);
            lv_idx_1_0=ruleIndex();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getArrayElementRule());
            	        }
                   		set(
                   			current, 
                   			"idx",
                    		lv_idx_1_0, 
                    		"Index");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArrayElement"


    // $ANTLR start "entryRuleIndex"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3664:1: entryRuleIndex returns [EObject current=null] : iv_ruleIndex= ruleIndex EOF ;
    public final EObject entryRuleIndex() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIndex = null;


        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3665:2: (iv_ruleIndex= ruleIndex EOF )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3666:2: iv_ruleIndex= ruleIndex EOF
            {
             newCompositeNode(grammarAccess.getIndexRule()); 
            pushFollow(FOLLOW_ruleIndex_in_entryRuleIndex7084);
            iv_ruleIndex=ruleIndex();

            state._fsp--;

             current =iv_ruleIndex; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIndex7094); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIndex"


    // $ANTLR start "ruleIndex"
    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3673:1: ruleIndex returns [EObject current=null] : (otherlv_0= '[' ( ( (lv_param1_1_0= RULE_INT ) ) | ( (otherlv_2= RULE_ID ) ) ) (otherlv_3= ',' ( ( (lv_param2_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) ) )? otherlv_6= ']' ) ;
    public final EObject ruleIndex() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_param1_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_param2_4_0=null;
        Token otherlv_5=null;
        Token otherlv_6=null;

         enterRule(); 
            
        try {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3676:28: ( (otherlv_0= '[' ( ( (lv_param1_1_0= RULE_INT ) ) | ( (otherlv_2= RULE_ID ) ) ) (otherlv_3= ',' ( ( (lv_param2_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) ) )? otherlv_6= ']' ) )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3677:1: (otherlv_0= '[' ( ( (lv_param1_1_0= RULE_INT ) ) | ( (otherlv_2= RULE_ID ) ) ) (otherlv_3= ',' ( ( (lv_param2_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) ) )? otherlv_6= ']' )
            {
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3677:1: (otherlv_0= '[' ( ( (lv_param1_1_0= RULE_INT ) ) | ( (otherlv_2= RULE_ID ) ) ) (otherlv_3= ',' ( ( (lv_param2_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) ) )? otherlv_6= ']' )
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3677:3: otherlv_0= '[' ( ( (lv_param1_1_0= RULE_INT ) ) | ( (otherlv_2= RULE_ID ) ) ) (otherlv_3= ',' ( ( (lv_param2_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) ) )? otherlv_6= ']'
            {
            otherlv_0=(Token)match(input,37,FOLLOW_37_in_ruleIndex7131); 

                	newLeafNode(otherlv_0, grammarAccess.getIndexAccess().getLeftSquareBracketKeyword_0());
                
            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3681:1: ( ( (lv_param1_1_0= RULE_INT ) ) | ( (otherlv_2= RULE_ID ) ) )
            int alt54=2;
            int LA54_0 = input.LA(1);

            if ( (LA54_0==RULE_INT) ) {
                alt54=1;
            }
            else if ( (LA54_0==RULE_ID) ) {
                alt54=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 54, 0, input);

                throw nvae;
            }
            switch (alt54) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3681:2: ( (lv_param1_1_0= RULE_INT ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3681:2: ( (lv_param1_1_0= RULE_INT ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3682:1: (lv_param1_1_0= RULE_INT )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3682:1: (lv_param1_1_0= RULE_INT )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3683:3: lv_param1_1_0= RULE_INT
                    {
                    lv_param1_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleIndex7149); 

                    			newLeafNode(lv_param1_1_0, grammarAccess.getIndexAccess().getParam1INTTerminalRuleCall_1_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getIndexRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"param1",
                            		lv_param1_1_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3700:6: ( (otherlv_2= RULE_ID ) )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3700:6: ( (otherlv_2= RULE_ID ) )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3701:1: (otherlv_2= RULE_ID )
                    {
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3701:1: (otherlv_2= RULE_ID )
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3702:3: otherlv_2= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getIndexRule());
                    	        }
                            
                    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleIndex7180); 

                    		newLeafNode(otherlv_2, grammarAccess.getIndexAccess().getVar1SimpleVariableCrossReference_1_1_0()); 
                    	

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3713:3: (otherlv_3= ',' ( ( (lv_param2_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) ) )?
            int alt56=2;
            int LA56_0 = input.LA(1);

            if ( (LA56_0==12) ) {
                alt56=1;
            }
            switch (alt56) {
                case 1 :
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3713:5: otherlv_3= ',' ( ( (lv_param2_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) )
                    {
                    otherlv_3=(Token)match(input,12,FOLLOW_12_in_ruleIndex7194); 

                        	newLeafNode(otherlv_3, grammarAccess.getIndexAccess().getCommaKeyword_2_0());
                        
                    // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3717:1: ( ( (lv_param2_4_0= RULE_INT ) ) | ( (otherlv_5= RULE_ID ) ) )
                    int alt55=2;
                    int LA55_0 = input.LA(1);

                    if ( (LA55_0==RULE_INT) ) {
                        alt55=1;
                    }
                    else if ( (LA55_0==RULE_ID) ) {
                        alt55=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 55, 0, input);

                        throw nvae;
                    }
                    switch (alt55) {
                        case 1 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3717:2: ( (lv_param2_4_0= RULE_INT ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3717:2: ( (lv_param2_4_0= RULE_INT ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3718:1: (lv_param2_4_0= RULE_INT )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3718:1: (lv_param2_4_0= RULE_INT )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3719:3: lv_param2_4_0= RULE_INT
                            {
                            lv_param2_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleIndex7212); 

                            			newLeafNode(lv_param2_4_0, grammarAccess.getIndexAccess().getParam2INTTerminalRuleCall_2_1_0_0()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getIndexRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"param2",
                                    		lv_param2_4_0, 
                                    		"INT");
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3736:6: ( (otherlv_5= RULE_ID ) )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3736:6: ( (otherlv_5= RULE_ID ) )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3737:1: (otherlv_5= RULE_ID )
                            {
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3737:1: (otherlv_5= RULE_ID )
                            // ../org.xtext.example.cr/src-gen/org/xtext/example/cr/parser/antlr/internal/InternalCR.g:3738:3: otherlv_5= RULE_ID
                            {

                            			if (current==null) {
                            	            current = createModelElement(grammarAccess.getIndexRule());
                            	        }
                                    
                            otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleIndex7243); 

                            		newLeafNode(otherlv_5, grammarAccess.getIndexAccess().getVar2SimpleVariableCrossReference_2_1_1_0()); 
                            	

                            }


                            }


                            }
                            break;

                    }


                    }
                    break;

            }

            otherlv_6=(Token)match(input,38,FOLLOW_38_in_ruleIndex7258); 

                	newLeafNode(otherlv_6, grammarAccess.getIndexAccess().getRightSquareBracketKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIndex"

    // Delegated rules


    protected DFA2 dfa2 = new DFA2(this);
    protected DFA14 dfa14 = new DFA14(this);
    protected DFA17 dfa17 = new DFA17(this);
    protected DFA18 dfa18 = new DFA18(this);
    protected DFA28 dfa28 = new DFA28(this);
    protected DFA21 dfa21 = new DFA21(this);
    protected DFA23 dfa23 = new DFA23(this);
    protected DFA37 dfa37 = new DFA37(this);
    protected DFA38 dfa38 = new DFA38(this);
    protected DFA44 dfa44 = new DFA44(this);
    static final String DFA2_eotS =
        "\45\uffff";
    static final String DFA2_eofS =
        "\7\uffff\3\17\13\uffff\3\17\12\uffff\1\17\1\uffff\1\17";
    static final String DFA2_minS =
        "\4\5\1\20\1\14\1\uffff\3\5\1\4\1\uffff\1\4\1\uffff\1\5\1\uffff"+
        "\2\5\3\14\3\5\1\4\1\13\1\4\1\22\1\21\3\5\2\46\3\5";
    static final String DFA2_maxS =
        "\1\41\3\5\1\20\1\45\1\uffff\3\41\1\4\1\uffff\1\5\1\uffff\1\5\1"+
        "\uffff\2\5\1\21\2\46\3\41\1\4\1\16\1\5\1\23\1\21\3\5\2\46\1\41\1"+
        "\5\1\41";
    static final String DFA2_acceptS =
        "\6\uffff\1\4\4\uffff\1\3\1\uffff\1\2\1\uffff\1\1\25\uffff";
    static final String DFA2_specialS =
        "\45\uffff}>";
    static final String[] DFA2_transitionS = {
            "\1\5\5\uffff\1\1\1\uffff\1\2\1\3\1\4\7\uffff\2\6\4\uffff\5"+
            "\6",
            "\1\7",
            "\1\10",
            "\1\11",
            "\1\12",
            "\1\15\5\uffff\1\15\1\13\21\uffff\1\14",
            "",
            "\1\17\5\uffff\1\17\1\16\3\17\2\uffff\1\15\4\uffff\2\17\3\uffff"+
            "\6\17",
            "\1\17\5\uffff\1\17\1\20\3\17\2\uffff\1\15\4\uffff\2\17\3\uffff"+
            "\6\17",
            "\1\17\5\uffff\1\17\1\21\3\17\2\uffff\1\15\4\uffff\2\17\3\uffff"+
            "\6\17",
            "\1\22",
            "",
            "\1\23\1\24",
            "",
            "\1\25",
            "",
            "\1\26",
            "\1\27",
            "\1\30\4\uffff\1\31",
            "\1\32\31\uffff\1\33",
            "\1\32\31\uffff\1\33",
            "\1\17\5\uffff\1\17\1\16\3\17\2\uffff\1\15\4\uffff\2\17\3\uffff"+
            "\6\17",
            "\1\17\5\uffff\1\17\1\20\3\17\2\uffff\1\15\4\uffff\2\17\3\uffff"+
            "\6\17",
            "\1\17\5\uffff\1\17\1\21\3\17\2\uffff\1\15\4\uffff\2\17\3\uffff"+
            "\6\17",
            "\1\34",
            "\1\35\1\uffff\1\36\1\37",
            "\1\40\1\41",
            "\1\15\1\13",
            "\1\31",
            "\1\42",
            "\1\42",
            "\1\42",
            "\1\33",
            "\1\33",
            "\1\17\5\uffff\1\17\1\43\3\17\2\uffff\1\15\4\uffff\2\17\3\uffff"+
            "\6\17",
            "\1\44",
            "\1\17\5\uffff\1\17\1\43\3\17\2\uffff\1\15\4\uffff\2\17\3\uffff"+
            "\6\17"
    };

    static final short[] DFA2_eot = DFA.unpackEncodedString(DFA2_eotS);
    static final short[] DFA2_eof = DFA.unpackEncodedString(DFA2_eofS);
    static final char[] DFA2_min = DFA.unpackEncodedStringToUnsignedChars(DFA2_minS);
    static final char[] DFA2_max = DFA.unpackEncodedStringToUnsignedChars(DFA2_maxS);
    static final short[] DFA2_accept = DFA.unpackEncodedString(DFA2_acceptS);
    static final short[] DFA2_special = DFA.unpackEncodedString(DFA2_specialS);
    static final short[][] DFA2_transition;

    static {
        int numStates = DFA2_transitionS.length;
        DFA2_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA2_transition[i] = DFA.unpackEncodedString(DFA2_transitionS[i]);
        }
    }

    class DFA2 extends DFA {

        public DFA2(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 2;
            this.eot = DFA2_eot;
            this.eof = DFA2_eof;
            this.min = DFA2_min;
            this.max = DFA2_max;
            this.accept = DFA2_accept;
            this.special = DFA2_special;
            this.transition = DFA2_transition;
        }
        public String getDescription() {
            return "119:1: ( ( (lv_varDec_0_0= ruleVarDec ) ) | ( (lv_assignment_1_0= ruleAssignment ) ) | ( (lv_arrayMethod_2_0= ruleArrayMethod ) ) | ( (lv_function_3_0= ruleFunction ) ) )";
        }
    }
    static final String DFA14_eotS =
        "\15\uffff";
    static final String DFA14_eofS =
        "\15\uffff";
    static final String DFA14_minS =
        "\1\5\1\23\1\24\1\4\3\uffff\2\14\1\4\1\23\2\46";
    static final String DFA14_maxS =
        "\1\5\1\45\1\26\1\5\3\uffff\2\46\1\5\1\23\2\46";
    static final String DFA14_acceptS =
        "\4\uffff\1\1\1\2\1\3\6\uffff";
    static final String DFA14_specialS =
        "\15\uffff}>";
    static final String[] DFA14_transitionS = {
            "\1\1",
            "\1\2\21\uffff\1\3",
            "\1\4\1\5\1\6",
            "\1\7\1\10",
            "",
            "",
            "",
            "\1\11\31\uffff\1\12",
            "\1\11\31\uffff\1\12",
            "\1\13\1\14",
            "\1\2",
            "\1\12",
            "\1\12"
    };

    static final short[] DFA14_eot = DFA.unpackEncodedString(DFA14_eotS);
    static final short[] DFA14_eof = DFA.unpackEncodedString(DFA14_eofS);
    static final char[] DFA14_min = DFA.unpackEncodedStringToUnsignedChars(DFA14_minS);
    static final char[] DFA14_max = DFA.unpackEncodedStringToUnsignedChars(DFA14_maxS);
    static final short[] DFA14_accept = DFA.unpackEncodedString(DFA14_acceptS);
    static final short[] DFA14_special = DFA.unpackEncodedString(DFA14_specialS);
    static final short[][] DFA14_transition;

    static {
        int numStates = DFA14_transitionS.length;
        DFA14_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA14_transition[i] = DFA.unpackEncodedString(DFA14_transitionS[i]);
        }
    }

    class DFA14 extends DFA {

        public DFA14(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 14;
            this.eot = DFA14_eot;
            this.eof = DFA14_eof;
            this.min = DFA14_min;
            this.max = DFA14_max;
            this.accept = DFA14_accept;
            this.special = DFA14_special;
            this.transition = DFA14_transition;
        }
        public String getDescription() {
            return "945:1: ( ( (lv_size_0_0= ruleSize ) ) | ( (lv_add_1_0= ruleAdd ) ) | ( (lv_delete_2_0= ruleDelete ) ) )";
        }
    }
    static final String DFA17_eotS =
        "\21\uffff";
    static final String DFA17_eofS =
        "\21\uffff";
    static final String DFA17_minS =
        "\1\4\1\uffff\1\14\3\uffff\1\4\1\uffff\1\24\2\14\1\uffff\1\4\1\14"+
        "\2\46\1\uffff";
    static final String DFA17_maxS =
        "\1\43\1\uffff\1\45\3\uffff\1\5\1\uffff\1\42\2\46\1\uffff\1\5\1"+
        "\23\2\46\1\uffff";
    static final String DFA17_acceptS =
        "\1\uffff\1\1\1\uffff\1\4\1\6\1\7\1\uffff\1\2\3\uffff\1\5\4\uffff"+
        "\1\3";
    static final String DFA17_specialS =
        "\21\uffff}>";
    static final String[] DFA17_transitionS = {
            "\1\1\1\2\30\uffff\1\4\1\5\3\uffff\1\3",
            "",
            "\1\7\4\uffff\1\7\1\uffff\1\10\20\uffff\1\3\1\6",
            "",
            "",
            "",
            "\1\11\1\12",
            "",
            "\1\13\15\uffff\1\3",
            "\1\14\31\uffff\1\15",
            "\1\14\31\uffff\1\15",
            "",
            "\1\16\1\17",
            "\1\20\4\uffff\1\20\1\uffff\1\13",
            "\1\15",
            "\1\15",
            ""
    };

    static final short[] DFA17_eot = DFA.unpackEncodedString(DFA17_eotS);
    static final short[] DFA17_eof = DFA.unpackEncodedString(DFA17_eofS);
    static final char[] DFA17_min = DFA.unpackEncodedStringToUnsignedChars(DFA17_minS);
    static final char[] DFA17_max = DFA.unpackEncodedStringToUnsignedChars(DFA17_maxS);
    static final short[] DFA17_accept = DFA.unpackEncodedString(DFA17_acceptS);
    static final short[] DFA17_special = DFA.unpackEncodedString(DFA17_specialS);
    static final short[][] DFA17_transition;

    static {
        int numStates = DFA17_transitionS.length;
        DFA17_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA17_transition[i] = DFA.unpackEncodedString(DFA17_transitionS[i]);
        }
    }

    class DFA17 extends DFA {

        public DFA17(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 17;
            this.eot = DFA17_eot;
            this.eof = DFA17_eof;
            this.min = DFA17_min;
            this.max = DFA17_max;
            this.accept = DFA17_accept;
            this.special = DFA17_special;
            this.transition = DFA17_transition;
        }
        public String getDescription() {
            return "1157:1: ( ( (lv_numParams_5_0= ruleNumber ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_aeParams_7_0= ruleArrayElement ) ) | ( (lv_archive_8_0= ruleArchive ) ) | ( (lv_sizes_9_0= ruleSize ) ) | ( (lv_calcCRs_10_0= ruleCalcCR ) ) | ( (lv_calcMeans_11_0= ruleCalcMean ) ) )";
        }
    }
    static final String DFA18_eotS =
        "\21\uffff";
    static final String DFA18_eofS =
        "\21\uffff";
    static final String DFA18_minS =
        "\1\4\1\uffff\1\14\3\uffff\1\24\1\4\2\uffff\2\14\1\4\1\14\2\46\1"+
        "\uffff";
    static final String DFA18_maxS =
        "\1\43\1\uffff\1\45\3\uffff\1\42\1\5\2\uffff\2\46\1\5\1\23\2\46"+
        "\1\uffff";
    static final String DFA18_acceptS =
        "\1\uffff\1\1\1\uffff\1\4\1\6\1\7\2\uffff\1\2\1\5\6\uffff\1\3";
    static final String DFA18_specialS =
        "\21\uffff}>";
    static final String[] DFA18_transitionS = {
            "\1\1\1\2\30\uffff\1\4\1\5\3\uffff\1\3",
            "",
            "\1\10\4\uffff\1\10\1\uffff\1\6\20\uffff\1\3\1\7",
            "",
            "",
            "",
            "\1\11\15\uffff\1\3",
            "\1\12\1\13",
            "",
            "",
            "\1\14\31\uffff\1\15",
            "\1\14\31\uffff\1\15",
            "\1\16\1\17",
            "\1\20\4\uffff\1\20\1\uffff\1\11",
            "\1\15",
            "\1\15",
            ""
    };

    static final short[] DFA18_eot = DFA.unpackEncodedString(DFA18_eotS);
    static final short[] DFA18_eof = DFA.unpackEncodedString(DFA18_eofS);
    static final char[] DFA18_min = DFA.unpackEncodedStringToUnsignedChars(DFA18_minS);
    static final char[] DFA18_max = DFA.unpackEncodedStringToUnsignedChars(DFA18_maxS);
    static final short[] DFA18_accept = DFA.unpackEncodedString(DFA18_acceptS);
    static final short[] DFA18_special = DFA.unpackEncodedString(DFA18_specialS);
    static final short[][] DFA18_transition;

    static {
        int numStates = DFA18_transitionS.length;
        DFA18_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA18_transition[i] = DFA.unpackEncodedString(DFA18_transitionS[i]);
        }
    }

    class DFA18 extends DFA {

        public DFA18(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 18;
            this.eot = DFA18_eot;
            this.eof = DFA18_eof;
            this.min = DFA18_min;
            this.max = DFA18_max;
            this.accept = DFA18_accept;
            this.special = DFA18_special;
            this.transition = DFA18_transition;
        }
        public String getDescription() {
            return "1288:1: ( ( (lv_numParams_13_0= ruleNumber ) ) | ( (otherlv_14= RULE_ID ) ) | ( (lv_aeParams_15_0= ruleArrayElement ) ) | ( (lv_archive_16_0= ruleArchive ) ) | ( (lv_sizes_17_0= ruleSize ) ) | ( (lv_calcCRs_18_0= ruleCalcCR ) ) | ( (lv_calcMeans_19_0= ruleCalcMean ) ) )";
        }
    }
    static final String DFA28_eotS =
        "\16\uffff";
    static final String DFA28_eofS =
        "\16\uffff";
    static final String DFA28_minS =
        "\1\5\1\23\1\26\1\4\1\20\2\14\2\4\1\23\2\uffff\2\46";
    static final String DFA28_maxS =
        "\1\5\1\45\1\26\1\5\1\20\2\46\1\45\1\5\1\23\2\uffff\2\46";
    static final String DFA28_acceptS =
        "\12\uffff\1\1\1\2\2\uffff";
    static final String DFA28_specialS =
        "\16\uffff}>";
    static final String[] DFA28_transitionS = {
            "\1\1",
            "\1\2\21\uffff\1\3",
            "\1\4",
            "\1\5\1\6",
            "\1\7",
            "\1\10\31\uffff\1\11",
            "\1\10\31\uffff\1\11",
            "\2\12\32\uffff\2\13\3\uffff\1\13",
            "\1\14\1\15",
            "\1\2",
            "",
            "",
            "\1\11",
            "\1\11"
    };

    static final short[] DFA28_eot = DFA.unpackEncodedString(DFA28_eotS);
    static final short[] DFA28_eof = DFA.unpackEncodedString(DFA28_eofS);
    static final char[] DFA28_min = DFA.unpackEncodedStringToUnsignedChars(DFA28_minS);
    static final char[] DFA28_max = DFA.unpackEncodedStringToUnsignedChars(DFA28_maxS);
    static final short[] DFA28_accept = DFA.unpackEncodedString(DFA28_acceptS);
    static final short[] DFA28_special = DFA.unpackEncodedString(DFA28_specialS);
    static final short[][] DFA28_transition;

    static {
        int numStates = DFA28_transitionS.length;
        DFA28_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA28_transition[i] = DFA.unpackEncodedString(DFA28_transitionS[i]);
        }
    }

    class DFA28 extends DFA {

        public DFA28(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 28;
            this.eot = DFA28_eot;
            this.eof = DFA28_eof;
            this.min = DFA28_min;
            this.max = DFA28_max;
            this.accept = DFA28_accept;
            this.special = DFA28_special;
            this.transition = DFA28_transition;
        }
        public String getDescription() {
            return "1440:1: ( ( ( ( (otherlv_0= RULE_ID ) ) | ( (lv_arrayElement_1_0= ruleArrayElement ) ) ) otherlv_2= '.' ( (lv_method_3_0= 'delete' ) ) otherlv_4= '(' ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) ) ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )* otherlv_14= ')' ) | ( ( ( (otherlv_15= RULE_ID ) ) | ( (lv_arrayElement_16_0= ruleArrayElement ) ) ) otherlv_17= '.' ( (lv_method_18_0= 'delete' ) ) otherlv_19= '(' ( ( (lv_indexs_20_0= ruleIndex ) ) | ( (lv_findSimilars_21_0= ruleFindSimilar ) ) | ( (lv_highestCRs_22_0= ruleHighestCR ) ) ) (otherlv_23= ',' ( ( (lv_indxs_24_0= ruleIndex ) ) | ( (lv_findSimilars_25_0= ruleFindSimilar ) ) | ( (lv_highestCRs_26_0= ruleHighestCR ) ) ) )* otherlv_27= ')' ) )";
        }
    }
    static final String DFA21_eotS =
        "\15\uffff";
    static final String DFA21_eofS =
        "\15\uffff";
    static final String DFA21_minS =
        "\1\4\1\uffff\1\5\1\4\2\uffff\2\14\1\4\1\5\2\46\1\uffff";
    static final String DFA21_maxS =
        "\1\5\1\uffff\1\45\1\5\2\uffff\2\46\1\5\1\23\2\46\1\uffff";
    static final String DFA21_acceptS =
        "\1\uffff\1\1\2\uffff\1\2\1\4\6\uffff\1\3";
    static final String DFA21_specialS =
        "\15\uffff}>";
    static final String[] DFA21_transitionS = {
            "\1\1\1\2",
            "",
            "\1\4\6\uffff\1\4\4\uffff\1\4\1\uffff\1\5\21\uffff\1\3",
            "\1\6\1\7",
            "",
            "",
            "\1\10\31\uffff\1\11",
            "\1\10\31\uffff\1\11",
            "\1\12\1\13",
            "\1\14\6\uffff\1\14\4\uffff\1\14\1\uffff\1\5",
            "\1\11",
            "\1\11",
            ""
    };

    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
    static final short[][] DFA21_transition;

    static {
        int numStates = DFA21_transitionS.length;
        DFA21_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
        }
    }

    class DFA21 extends DFA {

        public DFA21(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 21;
            this.eot = DFA21_eot;
            this.eof = DFA21_eof;
            this.min = DFA21_min;
            this.max = DFA21_max;
            this.accept = DFA21_accept;
            this.special = DFA21_special;
            this.transition = DFA21_transition;
        }
        public String getDescription() {
            return "1495:1: ( ( (lv_delElements_5_0= RULE_INT ) ) | ( (otherlv_6= RULE_ID ) ) | ( (lv_delArrays_7_0= ruleArrayElement ) ) | ( (lv_size_8_0= ruleSize ) ) )";
        }
    }
    static final String DFA23_eotS =
        "\15\uffff";
    static final String DFA23_eofS =
        "\15\uffff";
    static final String DFA23_minS =
        "\1\5\2\uffff\1\23\1\4\1\uffff\2\14\1\4\1\5\2\46\1\uffff";
    static final String DFA23_maxS =
        "\1\21\2\uffff\1\45\1\5\1\uffff\2\46\1\5\1\23\2\46\1\uffff";
    static final String DFA23_acceptS =
        "\1\uffff\1\4\1\1\2\uffff\1\3\6\uffff\1\2";
    static final String DFA23_specialS =
        "\15\uffff}>";
    static final String[] DFA23_transitionS = {
            "\1\3\6\uffff\1\2\4\uffff\1\1",
            "",
            "",
            "\1\5\21\uffff\1\4",
            "\1\6\1\7",
            "",
            "\1\10\31\uffff\1\11",
            "\1\10\31\uffff\1\11",
            "\1\12\1\13",
            "\1\14\6\uffff\1\14\4\uffff\1\14\1\uffff\1\5",
            "\1\11",
            "\1\11",
            ""
    };

    static final short[] DFA23_eot = DFA.unpackEncodedString(DFA23_eotS);
    static final short[] DFA23_eof = DFA.unpackEncodedString(DFA23_eofS);
    static final char[] DFA23_min = DFA.unpackEncodedStringToUnsignedChars(DFA23_minS);
    static final char[] DFA23_max = DFA.unpackEncodedStringToUnsignedChars(DFA23_maxS);
    static final short[] DFA23_accept = DFA.unpackEncodedString(DFA23_acceptS);
    static final short[] DFA23_special = DFA.unpackEncodedString(DFA23_specialS);
    static final short[][] DFA23_transition;

    static {
        int numStates = DFA23_transitionS.length;
        DFA23_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA23_transition[i] = DFA.unpackEncodedString(DFA23_transitionS[i]);
        }
    }

    class DFA23 extends DFA {

        public DFA23(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 23;
            this.eot = DFA23_eot;
            this.eof = DFA23_eof;
            this.min = DFA23_min;
            this.max = DFA23_max;
            this.accept = DFA23_accept;
            this.special = DFA23_special;
            this.transition = DFA23_transition;
        }
        public String getDescription() {
            return "()* loopback of 1565:3: ( (otherlv_9= ',' ( ( (lv_delElements_10_0= RULE_INT ) ) | ( (otherlv_11= RULE_ID ) ) ) ) | ( (lv_delArrays_12_0= ruleArrayElement ) ) | ( (lv_size_13_0= ruleSize ) ) )*";
        }
    }
    static final String DFA37_eotS =
        "\15\uffff";
    static final String DFA37_eofS =
        "\15\uffff";
    static final String DFA37_minS =
        "\1\4\1\uffff\1\14\1\4\2\uffff\2\14\1\4\1\14\2\46\1\uffff";
    static final String DFA37_maxS =
        "\1\5\1\uffff\1\45\1\5\2\uffff\2\46\1\5\1\23\2\46\1\uffff";
    static final String DFA37_acceptS =
        "\1\uffff\1\1\2\uffff\1\2\1\3\6\uffff\1\4";
    static final String DFA37_specialS =
        "\15\uffff}>";
    static final String[] DFA37_transitionS = {
            "\1\1\1\2",
            "",
            "\1\4\6\uffff\1\5\21\uffff\1\3",
            "\1\6\1\7",
            "",
            "",
            "\1\10\31\uffff\1\11",
            "\1\10\31\uffff\1\11",
            "\1\12\1\13",
            "\1\14\6\uffff\1\5",
            "\1\11",
            "\1\11",
            ""
    };

    static final short[] DFA37_eot = DFA.unpackEncodedString(DFA37_eotS);
    static final short[] DFA37_eof = DFA.unpackEncodedString(DFA37_eofS);
    static final char[] DFA37_min = DFA.unpackEncodedStringToUnsignedChars(DFA37_minS);
    static final char[] DFA37_max = DFA.unpackEncodedStringToUnsignedChars(DFA37_maxS);
    static final short[] DFA37_accept = DFA.unpackEncodedString(DFA37_acceptS);
    static final short[] DFA37_special = DFA.unpackEncodedString(DFA37_specialS);
    static final short[][] DFA37_transition;

    static {
        int numStates = DFA37_transitionS.length;
        DFA37_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA37_transition[i] = DFA.unpackEncodedString(DFA37_transitionS[i]);
        }
    }

    class DFA37 extends DFA {

        public DFA37(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 37;
            this.eot = DFA37_eot;
            this.eof = DFA37_eof;
            this.min = DFA37_min;
            this.max = DFA37_max;
            this.accept = DFA37_accept;
            this.special = DFA37_special;
            this.transition = DFA37_transition;
        }
        public String getDescription() {
            return "2329:1: ( ( (lv_begin_3_0= RULE_INT ) ) | ( (otherlv_4= RULE_ID ) ) | ( (lv_beginFunction_5_0= ruleSize ) ) | ( (lv_beginAE_6_0= ruleArrayElement ) ) )";
        }
    }
    static final String DFA38_eotS =
        "\15\uffff";
    static final String DFA38_eofS =
        "\15\uffff";
    static final String DFA38_minS =
        "\1\4\1\uffff\1\21\1\uffff\1\4\1\uffff\2\14\1\4\1\21\2\46\1\uffff";
    static final String DFA38_maxS =
        "\1\5\1\uffff\1\45\1\uffff\1\5\1\uffff\2\46\1\5\1\23\2\46\1\uffff";
    static final String DFA38_acceptS =
        "\1\uffff\1\1\1\uffff\1\2\1\uffff\1\3\6\uffff\1\4";
    static final String DFA38_specialS =
        "\15\uffff}>";
    static final String[] DFA38_transitionS = {
            "\1\1\1\2",
            "",
            "\1\3\1\uffff\1\5\21\uffff\1\4",
            "",
            "\1\6\1\7",
            "",
            "\1\10\31\uffff\1\11",
            "\1\10\31\uffff\1\11",
            "\1\12\1\13",
            "\1\14\1\uffff\1\5",
            "\1\11",
            "\1\11",
            ""
    };

    static final short[] DFA38_eot = DFA.unpackEncodedString(DFA38_eotS);
    static final short[] DFA38_eof = DFA.unpackEncodedString(DFA38_eofS);
    static final char[] DFA38_min = DFA.unpackEncodedStringToUnsignedChars(DFA38_minS);
    static final char[] DFA38_max = DFA.unpackEncodedStringToUnsignedChars(DFA38_maxS);
    static final short[] DFA38_accept = DFA.unpackEncodedString(DFA38_acceptS);
    static final short[] DFA38_special = DFA.unpackEncodedString(DFA38_specialS);
    static final short[][] DFA38_transition;

    static {
        int numStates = DFA38_transitionS.length;
        DFA38_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA38_transition[i] = DFA.unpackEncodedString(DFA38_transitionS[i]);
        }
    }

    class DFA38 extends DFA {

        public DFA38(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 38;
            this.eot = DFA38_eot;
            this.eof = DFA38_eof;
            this.min = DFA38_min;
            this.max = DFA38_max;
            this.accept = DFA38_accept;
            this.special = DFA38_special;
            this.transition = DFA38_transition;
        }
        public String getDescription() {
            return "2403:1: ( ( (lv_end_8_0= RULE_INT ) ) | ( (otherlv_9= RULE_ID ) ) | ( (lv_endFunction_10_0= ruleSize ) ) | ( (lv_endAE_11_0= ruleArrayElement ) ) )";
        }
    }
    static final String DFA44_eotS =
        "\15\uffff";
    static final String DFA44_eofS =
        "\15\uffff";
    static final String DFA44_minS =
        "\1\36\1\20\1\5\1\14\1\uffff\1\4\1\uffff\2\14\1\4\1\14\2\46";
    static final String DFA44_maxS =
        "\1\36\1\20\1\5\1\45\1\uffff\1\5\1\uffff\2\46\1\5\1\21\2\46";
    static final String DFA44_acceptS =
        "\4\uffff\1\1\1\uffff\1\2\6\uffff";
    static final String DFA44_specialS =
        "\15\uffff}>";
    static final String[] DFA44_transitionS = {
            "\1\1",
            "\1\2",
            "\1\3",
            "\1\6\4\uffff\1\4\23\uffff\1\5",
            "",
            "\1\7\1\10",
            "",
            "\1\11\31\uffff\1\12",
            "\1\11\31\uffff\1\12",
            "\1\13\1\14",
            "\1\6\4\uffff\1\4",
            "\1\12",
            "\1\12"
    };

    static final short[] DFA44_eot = DFA.unpackEncodedString(DFA44_eotS);
    static final short[] DFA44_eof = DFA.unpackEncodedString(DFA44_eofS);
    static final char[] DFA44_min = DFA.unpackEncodedStringToUnsignedChars(DFA44_minS);
    static final char[] DFA44_max = DFA.unpackEncodedStringToUnsignedChars(DFA44_maxS);
    static final short[] DFA44_accept = DFA.unpackEncodedString(DFA44_acceptS);
    static final short[] DFA44_special = DFA.unpackEncodedString(DFA44_specialS);
    static final short[][] DFA44_transition;

    static {
        int numStates = DFA44_transitionS.length;
        DFA44_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA44_transition[i] = DFA.unpackEncodedString(DFA44_transitionS[i]);
        }
    }

    class DFA44 extends DFA {

        public DFA44(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 44;
            this.eot = DFA44_eot;
            this.eof = DFA44_eof;
            this.min = DFA44_min;
            this.max = DFA44_max;
            this.accept = DFA44_accept;
            this.special = DFA44_special;
            this.transition = DFA44_transition;
        }
        public String getDescription() {
            return "2620:1: ( ( ( (lv_function_0_0= 'calcCR' ) ) otherlv_1= '(' ( ( (otherlv_2= RULE_ID ) ) | ( (lv_arrayElement_3_0= ruleArrayElement ) ) ) otherlv_4= ')' ) | ( ( (lv_function_5_0= 'calcCR' ) ) otherlv_6= '(' ( ( (lv_arrayElement1_7_0= ruleArrayElement ) ) | ( (otherlv_8= RULE_ID ) ) ) otherlv_9= ',' ( ( (lv_arrayElement2_10_0= ruleArrayElement ) ) | ( (otherlv_11= RULE_ID ) ) ) otherlv_12= ')' ) )";
        }
    }
 

    public static final BitSet FOLLOW_ruleCRLanguage_in_entryRuleCRLanguage75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCRLanguage85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElement_in_ruleCRLanguage130 = new BitSet(new long[]{0x00000003E180E822L});
    public static final BitSet FOLLOW_ruleElement_in_entryRuleElement166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElement176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVarDec_in_ruleElement222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAssignment_in_ruleElement249 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArrayMethod_in_ruleElement276 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunction_in_ruleElement303 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVarDec_in_entryRuleVarDec339 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVarDec349 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrimitiveDec_in_ruleVarDec395 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArrayDec_in_ruleVarDec422 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrimitiveDec_in_entryRulePrimitiveDec458 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePrimitiveDec468 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntDec_in_rulePrimitiveDec514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealDec_in_rulePrimitiveDec541 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePartitionDec_in_rulePrimitiveDec568 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntDec_in_entryRuleIntDec604 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntDec614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleIntDec657 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleSimpleVariable_in_ruleIntDec691 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_12_in_ruleIntDec704 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleSimpleVariable_in_ruleIntDec725 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_ruleRealDec_in_entryRuleRealDec763 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRealDec773 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_ruleRealDec816 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleSimpleVariable_in_ruleRealDec850 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_12_in_ruleRealDec863 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleSimpleVariable_in_ruleRealDec884 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_rulePartitionDec_in_entryRulePartitionDec922 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePartitionDec932 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rulePartitionDec975 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleSimpleVariable_in_rulePartitionDec1009 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_12_in_rulePartitionDec1022 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleSimpleVariable_in_rulePartitionDec1043 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_ruleArrayDec_in_entryRuleArrayDec1081 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArrayDec1091 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleArrayDec1134 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleArrayDec1159 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleArrayDec1176 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_12_in_ruleArrayDec1194 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleArrayDec1211 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleArrayDec1230 = new BitSet(new long[]{0x0000000000006800L});
    public static final BitSet FOLLOW_11_in_ruleArrayDec1250 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_13_in_ruleArrayDec1279 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_14_in_ruleArrayDec1308 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleArray_in_ruleArrayDec1345 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_12_in_ruleArrayDec1358 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleArray_in_ruleArrayDec1379 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_ruleAssignment_in_entryRuleAssignment1417 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAssignment1427 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVarDec_in_ruleAssignment1474 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAssignment1501 = new BitSet(new long[]{0x0000000000041000L});
    public static final BitSet FOLLOW_12_in_ruleAssignment1514 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAssignment1534 = new BitSet(new long[]{0x0000000000041000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleAssignment1564 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleAssignment1577 = new BitSet(new long[]{0x00000008C000E830L});
    public static final BitSet FOLLOW_ruleCalcCR_in_ruleAssignment1599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCalcMean_in_ruleAssignment1626 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumber_in_ruleAssignment1653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArchive_in_ruleAssignment1680 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAssignment1706 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleAssignment1733 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArrayMethod_in_entryRuleArrayMethod1770 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArrayMethod1780 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSize_in_ruleArrayMethod1826 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAdd_in_ruleArrayMethod1853 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDelete_in_ruleArrayMethod1880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSize_in_entryRuleSize1916 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSize1926 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSize1972 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleSize1999 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleSize2012 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleSize2030 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleSize2055 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleSize2067 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAdd_in_entryRuleAdd2103 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAdd2113 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAdd2159 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleAdd2186 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleAdd2199 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleAdd2217 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleAdd2242 = new BitSet(new long[]{0x00000008C000E830L});
    public static final BitSet FOLLOW_ruleNumber_in_ruleAdd2264 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAdd2290 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleAdd2317 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleArchive_in_ruleAdd2344 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleSize_in_ruleAdd2371 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleCalcCR_in_ruleAdd2398 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleCalcMean_in_ruleAdd2425 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_12_in_ruleAdd2439 = new BitSet(new long[]{0x00000008C000E830L});
    public static final BitSet FOLLOW_ruleNumber_in_ruleAdd2461 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAdd2487 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleAdd2514 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleArchive_in_ruleAdd2541 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleSize_in_ruleAdd2568 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleCalcCR_in_ruleAdd2595 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleCalcMean_in_ruleAdd2622 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_17_in_ruleAdd2637 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDelete_in_entryRuleDelete2673 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDelete2683 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDelete2730 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleDelete2757 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleDelete2770 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleDelete2788 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleDelete2813 = new BitSet(new long[]{0x000000000000E830L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleDelete2831 = new BitSet(new long[]{0x000000000002F820L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDelete2862 = new BitSet(new long[]{0x000000000002F820L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleDelete2889 = new BitSet(new long[]{0x000000000002F820L});
    public static final BitSet FOLLOW_ruleSize_in_ruleDelete2916 = new BitSet(new long[]{0x000000000002F820L});
    public static final BitSet FOLLOW_12_in_ruleDelete2931 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleDelete2949 = new BitSet(new long[]{0x000000000002F820L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDelete2980 = new BitSet(new long[]{0x000000000002F820L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleDelete3009 = new BitSet(new long[]{0x000000000002F820L});
    public static final BitSet FOLLOW_ruleSize_in_ruleDelete3036 = new BitSet(new long[]{0x000000000002F820L});
    public static final BitSet FOLLOW_17_in_ruleDelete3050 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDelete3079 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleDelete3106 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleDelete3119 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleDelete3137 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleDelete3162 = new BitSet(new long[]{0x00000023E182F820L});
    public static final BitSet FOLLOW_ruleIndex_in_ruleDelete3184 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleFindSimilar_in_ruleDelete3211 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleHighestCR_in_ruleDelete3238 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_12_in_ruleDelete3252 = new BitSet(new long[]{0x00000023E182F820L});
    public static final BitSet FOLLOW_ruleIndex_in_ruleDelete3274 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleFindSimilar_in_ruleDelete3301 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleHighestCR_in_ruleDelete3328 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_17_in_ruleDelete3343 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunction_in_entryRuleFunction3380 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunction3390 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStandardFunction_in_ruleFunction3436 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCRFunction_in_ruleFunction3463 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStandardFunction_in_entryRuleStandardFunction3499 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStandardFunction3509 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrint_in_ruleStandardFunction3555 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFor_in_ruleStandardFunction3582 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForall_in_ruleStandardFunction3609 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrint_in_entryRulePrint3645 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePrint3655 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_rulePrint3698 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_rulePrint3723 = new BitSet(new long[]{0x000000000000E860L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePrint3744 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePrint3767 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_rulePrint3799 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_12_in_rulePrint3813 = new BitSet(new long[]{0x000000000000E860L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePrint3834 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePrint3857 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_rulePrint3889 = new BitSet(new long[]{0x0000000000021000L});
    public static final BitSet FOLLOW_17_in_rulePrint3904 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFor_in_entryRuleFor3940 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFor3950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleFor3994 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleFor4019 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleFor4031 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFor4051 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleFor4063 = new BitSet(new long[]{0x0000000800000020L});
    public static final BitSet FOLLOW_ruleFolder_in_ruleFor4084 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleFor4096 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleFor4108 = new BitSet(new long[]{0x00000003F180E820L});
    public static final BitSet FOLLOW_ruleElement_in_ruleFor4129 = new BitSet(new long[]{0x00000003F180E820L});
    public static final BitSet FOLLOW_28_in_ruleFor4142 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleFor4168 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleFor4193 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFor4213 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleFor4225 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleFor4237 = new BitSet(new long[]{0x00000003F180E820L});
    public static final BitSet FOLLOW_ruleElement_in_ruleFor4258 = new BitSet(new long[]{0x00000003F180E820L});
    public static final BitSet FOLLOW_28_in_ruleFor4271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleForall_in_entryRuleForall4308 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleForall4318 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_ruleForall4361 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleForall4394 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleForall4406 = new BitSet(new long[]{0x000000000000E830L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleForall4424 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleForall4455 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_ruleSize_in_ruleForall4482 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleForall4509 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleForall4522 = new BitSet(new long[]{0x000000000000E830L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleForall4540 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleForall4571 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleSize_in_ruleForall4598 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleForall4625 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleForall4638 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleForall4650 = new BitSet(new long[]{0x00000003F180E820L});
    public static final BitSet FOLLOW_ruleElement_in_ruleForall4671 = new BitSet(new long[]{0x00000003F180E820L});
    public static final BitSet FOLLOW_28_in_ruleForall4684 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCRFunction_in_entryRuleCRFunction4720 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCRFunction4730 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCalcCR_in_ruleCRFunction4776 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCalcMean_in_ruleCRFunction4803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHighestCR_in_ruleCRFunction4830 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFindSimilar_in_ruleCRFunction4857 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCalcCR_in_entryRuleCalcCR4893 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCalcCR4903 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleCalcCR4947 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleCalcCR4972 = new BitSet(new long[]{0x000000000000E820L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCalcCR4993 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleCalcCR5020 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleCalcCR5033 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleCalcCR5059 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleCalcCR5084 = new BitSet(new long[]{0x000000000000E820L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleCalcCR5106 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCalcCR5132 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleCalcCR5145 = new BitSet(new long[]{0x000000000000E820L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleCalcCR5167 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCalcCR5193 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleCalcCR5206 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCalcMean_in_entryRuleCalcMean5243 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCalcMean5253 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleCalcMean5296 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleCalcMean5321 = new BitSet(new long[]{0x000000004000E820L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleCalcMean5342 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleCalcMean5369 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleCalcCR_in_ruleCalcMean5396 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleCalcMean5409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHighestCR_in_entryRuleHighestCR5445 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHighestCR5455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleHighestCR5498 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleHighestCR5523 = new BitSet(new long[]{0x000000004000E820L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleHighestCR5544 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleHighestCR5571 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleCalcCR_in_ruleHighestCR5598 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleHighestCR5611 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFindSimilar_in_entryRuleFindSimilar5647 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFindSimilar5657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleFindSimilar5700 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleFindSimilar5725 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFindSimilar5745 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleFindSimilar5757 = new BitSet(new long[]{0x000000000000E830L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleFindSimilar5775 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFindSimilar5806 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleFindSimilar5833 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleFindSimilar5846 = new BitSet(new long[]{0x00000000C000E830L});
    public static final BitSet FOLLOW_ruleNumber_in_ruleFindSimilar5868 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFindSimilar5894 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleArrayElement_in_ruleFindSimilar5921 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleCalcCR_in_ruleFindSimilar5948 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_ruleCalcMean_in_ruleFindSimilar5975 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleFindSimilar5988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleVariable_in_entryRuleSimpleVariable6026 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimpleVariable6036 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSimpleVariable6077 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArray_in_entryRuleArray6117 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArray6127 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleArray6168 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber6208 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumber6218 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleNumber6260 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_19_in_ruleNumber6278 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleNumber6295 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFolder_in_entryRuleFolder6338 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFolder6348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLinuxFolder_in_ruleFolder6394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleWindowsFolder_in_ruleFolder6421 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleArchive_in_entryRuleArchive6457 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArchive6467 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFolder_in_ruleArchive6513 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleArchive6531 = new BitSet(new long[]{0x0000000000080000L});
    public static final BitSet FOLLOW_19_in_ruleArchive6554 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleArchive6585 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLinuxFolder_in_entryRuleLinuxFolder6634 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLinuxFolder6644 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleLinuxFolder6687 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleLinuxFolder6718 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleLinuxFolder6741 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_ruleWindowsFolder_in_entryRuleWindowsFolder6792 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleWindowsFolder6802 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleWindowsFolder6844 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleWindowsFolder6867 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleWindowsFolder6898 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleWindowsFolder6921 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_ruleArrayElement_in_entryRuleArrayElement6972 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleArrayElement6982 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleArrayElement7027 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_ruleIndex_in_ruleArrayElement7048 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndex_in_entryRuleIndex7084 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIndex7094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleIndex7131 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleIndex7149 = new BitSet(new long[]{0x0000004000001000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleIndex7180 = new BitSet(new long[]{0x0000004000001000L});
    public static final BitSet FOLLOW_12_in_ruleIndex7194 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleIndex7212 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleIndex7243 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_ruleIndex7258 = new BitSet(new long[]{0x0000000000000002L});

}